最近因為工作比較忙也沒有更新隨筆。昨天下班因為身體不舒服,代碼也沒有碼多少。說碼代碼也還算不上,畢竟是自己無聊寫點小腳本自娛自樂。 今天這篇主要的知識點是使用Python的BeautifulSoup進行多層的遍歷。 筆者閑來無事寫了個小爬蟲,主要是爬取京東商品分類以及對應的連接 如圖所示。只是一個簡 ...
最近因為工作比較忙也沒有更新隨筆。昨天下班因為身體不舒服,代碼也沒有碼多少。說碼代碼也還算不上,畢竟是自己無聊寫點小腳本自娛自樂。
今天這篇主要的知識點是使用Python的BeautifulSoup進行多層的遍歷。
筆者閑來無事寫了個小爬蟲,主要是爬取京東商品分類以及對應的連接
如圖所示。只是一個簡單的哈,不是爬取裡面的隱藏的東西。
from bs4 import BeautifulSoup as bs
import requests
headers = {
"host": "www.jd.com",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Core/1.47.933.400 QQBrowser/9.4.8699.400",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
}
session = requests.session()
def get_url():
renspned = bs(session.get('http://www.jd.com/',headers = headers).text,'html.parser')
for i in renspned.find("div", {"class": "dd-inner"}).find_all("a",{"target":"_blank"}):
print(i.get_text(),':',i.get('href'))
get_url()
運行這段代碼以及達到了我們的目的。
我們來解讀一下這段代碼。
首先我們要訪問到京東的首頁。
然後通過BeautifulSoup對訪問到的首頁進行解析。
這個時候,我們就要定位元素,來獲取我們需要的東西了。
在瀏覽器中通過F12,我們可以看到下圖所示的東西:
我們來看看下麵這句代碼:
for i in renspned.find("div", {"class": "dd-inner"}).find_all("a",{"target":"_blank"})
這一行代碼完全滿足我們的需求,首先用find方法,定位到了class=“dd-inner”的div,然後使用find_all對該標簽下所有的a標簽。
最後,我想列印出所有的商品分類以及對應的鏈接,於是,我使用了i.get_text()和i.get('href')的方法終於獲取到了商品分類和對應的鏈接。
其實不是很難,主要是要用對方法。筆者因為是初學方法沒有用對。花了差不多兩天時間才搞定。這裡也是告訴大家,可以使用find().find_all()的方法進行多層的遍歷。