學(xué)會(huì)了制作本地網(wǎng)頁(yè),了解網(wǎng)頁(yè)構(gòu)成,接著便可以使用強(qiáng)大的第三方庫(kù)BeautifulSoup爬取網(wǎng)頁(yè)信息了。
下面有一個(gè)網(wǎng)頁(yè)的商品信息,我們要獲得商品名稱(chēng),價(jià)格,圖片,星級(jí)評(píng)價(jià)以及瀏覽量等信息,將信息分類(lèi)提取出來(lái)方便我們查閱。

Paste_Image.png
- PyCharm新建python文件
新建一個(gè)以main.py文件 - 從index.html讀取內(nèi)容
打開(kāi)創(chuàng)建的main.py文件和index.html文件,用瀏覽器查看html編寫(xiě)的網(wǎng)頁(yè),右鍵“檢查”copy需要爬取的信息標(biāo)簽(商品名稱(chēng),圖片地址,價(jià)格,評(píng)分星級(jí),瀏覽量等),注意用copy selector的方式賦值保存到main.py文件中注釋備用。

Paste_Image.png
注意BeautifulSoup不支持nth-child語(yǔ)法,后續(xù)使用時(shí)候?qū)⑵鋭h去。
- 編寫(xiě)main.py文件爬取網(wǎng)頁(yè)信息
導(dǎo)入bs4庫(kù),以讀取方式打開(kāi)html文件。用BeautifulSoup庫(kù)讀取網(wǎng)頁(yè)內(nèi)容,包含html文件和所需分析引擎,可以選擇如下幾種(這里我使用的是lxml):
(1) html.parser: BeautifulSoup內(nèi)置引擎,無(wú)須安裝
(2) html5lib: 需要安裝,命令 pip instanll html5lib (或者也可以通過(guò)PyCharm安裝,下同)
(3) lxml: 需要安裝,命令 pip install lxml
![Uploading Paste_Image_067521.png . . .]
根據(jù)CSS.Selector分別提取各個(gè)項(xiàng)目相應(yīng)的信息,用select()方法得到結(jié)果列表:

Paste_Image.png
用for循環(huán)和zip()函數(shù)遍歷每一項(xiàng)信息放入字典容器中。接下來(lái)幾部很關(guān)鍵,對(duì)于各個(gè)標(biāo)簽提取屬性信息不同,需要注意:
- 商品名稱(chēng),價(jià)格和瀏覽量都是文本信息,用get_text()方法即可得到相應(yīng)內(nèi)容;
- image是圖片,我們需要獲取圖片地址,這是圖片標(biāo)簽imag的src屬性,因此用get()方法直接獲取,即image.get('src');
- 最后是星星數(shù)目,需要用到find_all()方法:
find_all(name, attrs, recursive, text, **kwargs)
find_all()方法搜索當(dāng)前tag的所有tag子節(jié)點(diǎn),并判斷是否符合過(guò)濾器的條件。
在網(wǎng)頁(yè)中檢查星星標(biāo)簽時(shí)可以發(fā)現(xiàn)規(guī)律,根據(jù)這個(gè)作為條件篩選得到元素個(gè)數(shù)就是星星數(shù)目。
——————————————————————
爬取獲得的信息如下:

Paste_Image.png
附錄(源碼):

Paste_Image.png

Paste_Image.png