Python利用Xpath選擇器爬取京東網(wǎng)商品信息
HTML文件其實就是由一組尖括號構(gòu)成的標(biāo)簽組織起來的,每一對尖括號形式一個標(biāo)簽,標(biāo)簽之間存在上下關(guān)系,形成標(biāo)簽樹;XPath 使用路徑表達式在 XML 文檔中選取節(jié)點。節(jié)點是通過沿著路徑或者 step 來選取的。

首先進入京東網(wǎng),輸入自己想要查詢的商品,向服務(wù)器發(fā)送網(wǎng)頁請求。在這里小編仍以關(guān)鍵詞“狗糧”作為搜索對象,之后得到后面這一串網(wǎng)址:
https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中參數(shù)的意思就是我們輸入的keyword,在本例中該參數(shù)代表“狗糧”,具體詳情可以參考Python大神用正則表達式教你搞定京東商品信息。所以,只要輸入keyword這個參數(shù)之后,將其進行編碼,就可以獲取到目標(biāo)URL。之后請求網(wǎng)頁,得到響應(yīng),爾后利用bs4選擇器進行下一步的數(shù)據(jù)采集。
商品信息在京東官網(wǎng)上的部分網(wǎng)頁源碼如下圖所示:

狗糧信息在京東官網(wǎng)上的網(wǎng)頁源碼
仔細觀察源碼,可以發(fā)現(xiàn)我們所需的目標(biāo)信息是存在<li data-sku='*****' class='gl-item'>標(biāo)簽下的,那么接下來我們就像剝洋蔥一樣,一層一層的去獲取我們想要的信息。
通常URL編碼的方式是把需要編碼的字符轉(zhuǎn)化為%xx的形式,一般來說URL的編碼是基于UTF-8的,當(dāng)然也有的于瀏覽器平臺有關(guān)。在Python的urllib庫中提供了quote方法,可以實現(xiàn)對URL的字符串進行編碼,從而可以進入到對應(yīng)的網(wǎng)頁中去。

在線復(fù)制Xpath表達式
很多小伙伴都覺得Xpath表達式很難寫,其實掌握了基本的用法也就不難了。在線復(fù)制Xpath表達式如上圖所示,可以很方便的復(fù)制Xpath表達式。但是通過該方法得到的Xpath表達式放在程序中一般不能用,而且長的沒法看。所以Xpath表達式一般還是要自己親自上手。
直接上代碼,利用Xpath去提取目標(biāo)信息,如商品的名字、鏈接、圖片和價格,具體的代碼如下圖所示:

爬蟲代碼
在這里,小編告訴大家一個Xpath表達式匹配技巧。之前看過好幾篇文章,大佬們都推薦Xpath表達式使用嵌套匹配的方式。在本例中,首先定義items,如下所示:
items = selector.xpath(’//li[@class='gl-item']’)
之后通過range函數(shù),逐個從網(wǎng)頁中進行匹配目標(biāo)信息,而不是直接通過復(fù)制Xpath表達式的方式一步到位。希望小伙伴們以后都可以少入這個坑~~
最后得到的效果圖如下所示:

最終效果圖
新鮮的狗糧再一次出爐咯~~~
小伙伴們,有沒有發(fā)現(xiàn)利用Xpath來獲取目標(biāo)信息比正則表達式要簡單一些呢?
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Android如何加載Base64編碼格式圖片2. 詳解Android studio 動態(tài)fragment的用法3. 解決Android studio xml界面無法預(yù)覽問題4. 基于android studio的layout的xml文件的創(chuàng)建方式5. 圖文詳解vue中proto文件的函數(shù)調(diào)用6. Spring Boot和Thymeleaf整合結(jié)合JPA實現(xiàn)分頁效果(實例代碼)7. 什么是python的自省8. 使用Android studio查看Kotlin的字節(jié)碼教程9. Vuex localStorage的具體使用10. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應(yīng)用實現(xiàn)

網(wǎng)公網(wǎng)安備