Python實(shí)戰(zhàn)課程1-2練習(xí):爬取商品信息

學(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
  1. PyCharm新建python文件
    新建一個(gè)以main.py文件
  2. 從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去。

  1. 編寫(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)簽提取屬性信息不同,需要注意:

  1. 商品名稱(chēng),價(jià)格和瀏覽量都是文本信息,用get_text()方法即可得到相應(yīng)內(nèi)容;
  2. image是圖片,我們需要獲取圖片地址,這是圖片標(biāo)簽imag的src屬性,因此用get()方法直接獲取,即image.get('src');
  3. 最后是星星數(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容