Python利用Xpath選擇器爬取京東網(wǎng)商品信息
HTML文件其實(shí)就是由一組尖括號構(gòu)成的標(biāo)簽組織起來的,每一對尖括號形式一個(gè)標(biāo)簽,標(biāo)簽之間存在上下關(guān)系,形成標(biāo)簽樹;XPath 使用路徑表達(dá)式在 XML 文檔中選取節(jié)點(diǎn)。節(jié)點(diǎn)是通過沿著路徑或者 step 來選取的。
首先進(jìn)入京東網(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大神用正則表達(dá)式教你搞定京東商品信息。所以,只要輸入keyword這個(gè)參數(shù)之后,將其進(jìn)行編碼,就可以獲取到目標(biāo)URL。之后請求網(wǎng)頁,得到響應(yīng),爾后利用bs4選擇器進(jìn)行下一步的數(shù)據(jù)采集。
商品信息在京東官網(wǎng)上的部分網(wǎng)頁源碼如下圖所示:
狗糧信息在京東官網(wǎng)上的網(wǎng)頁源碼
仔細(xì)觀察源碼,可以發(fā)現(xiàn)我們所需的目標(biāo)信息是存在<li data-sku="*****" class="gl-item">標(biāo)簽下的,那么接下來我們就像剝洋蔥一樣,一層一層的去獲取我們想要的信息。
通常URL編碼的方式是把需要編碼的字符轉(zhuǎn)化為%xx的形式,一般來說URL的編碼是基于UTF-8的,當(dāng)然也有的于瀏覽器平臺(tái)有關(guān)。在Python的urllib庫中提供了quote方法,可以實(shí)現(xiàn)對URL的字符串進(jìn)行編碼,從而可以進(jìn)入到對應(yīng)的網(wǎng)頁中去。
在線復(fù)制Xpath表達(dá)式
很多小伙伴都覺得Xpath表達(dá)式很難寫,其實(shí)掌握了基本的用法也就不難了。在線復(fù)制Xpath表達(dá)式如上圖所示,可以很方便的復(fù)制Xpath表達(dá)式。但是通過該方法得到的Xpath表達(dá)式放在程序中一般不能用,而且長的沒法看。所以Xpath表達(dá)式一般還是要自己親自上手。
直接上代碼,利用Xpath去提取目標(biāo)信息,如商品的名字、鏈接、圖片和價(jià)格,具體的代碼如下圖所示:
爬蟲代碼
在這里,小編告訴大家一個(gè)Xpath表達(dá)式匹配技巧。之前看過好幾篇文章,大佬們都推薦Xpath表達(dá)式使用嵌套匹配的方式。在本例中,首先定義items,如下所示:
items = selector.xpath('//li[@class="gl-item"]')
之后通過range函數(shù),逐個(gè)從網(wǎng)頁中進(jìn)行匹配目標(biāo)信息,而不是直接通過復(fù)制Xpath表達(dá)式的方式一步到位。希望小伙伴們以后都可以少入這個(gè)坑~~
最后得到的效果圖如下所示:
最終效果圖
新鮮的狗糧再一次出爐咯~~~
小伙伴們,有沒有發(fā)現(xiàn)利用Xpath來獲取目標(biāo)信息比正則表達(dá)式要簡單一些呢?
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python中requests庫+xpath+lxml簡單使用
- python使用XPath解析數(shù)據(jù)爬取起點(diǎn)小說網(wǎng)數(shù)據(jù)
- python 網(wǎng)頁解析器掌握第三方 lxml 擴(kuò)展庫與 xpath 的使用方法
- python利用xpath爬取網(wǎng)上數(shù)據(jù)并存儲(chǔ)到django模型中
- Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法
- python Xpath語法的使用
- python3顯式變量類型typing的實(shí)現(xiàn)
- Python使用xpath實(shí)現(xiàn)圖片爬取
- 利用Python中的Xpath實(shí)現(xiàn)一個(gè)在線匯率轉(zhuǎn)換器
- python selenium xpath定位操作
- Python xpath表達(dá)式如何實(shí)現(xiàn)數(shù)據(jù)處理
- Python使用requests xpath 并開啟多線程爬取西刺代理ip實(shí)例
- python3 xpath和requests應(yīng)用詳解
- Python3 xml.etree.ElementTree支持的XPath語法詳解
- python-xpath獲取html文檔的部分內(nèi)容
- 關(guān)于python中的xpath解析定位
- python定位xpath 節(jié)點(diǎn)位置的方法
- Python自動(dòng)化之定位方法大殺器xpath
相關(guān)文章
利用python中的matplotlib打印混淆矩陣實(shí)例
這篇文章主要介紹了利用python中的matplotlib打印混淆矩陣實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06淺談Python的自省Introspection和反射機(jī)制Reflection
這篇文章主要介紹了淺談Python的自省Introspection和反射機(jī)制Reflection,反射就是通過字符串的形式去對象(模塊)中操作(查找/獲取/刪除/添加)成員,一種基于字符串的事件驅(qū)動(dòng),需要的朋友可以參考下2023-08-08基于python+pandoc實(shí)現(xiàn)html批量轉(zhuǎn)word
pandoc是一個(gè)強(qiáng)大的文檔格式轉(zhuǎn)換工具,支持豐富的格式轉(zhuǎn)換,并盡可能的保留原來的排版,號稱文檔格式轉(zhuǎn)換的瑞士軍刀,本文將給大家介紹一下使用python搭配pandoc實(shí)現(xiàn)html批量轉(zhuǎn)word,感興趣的朋友可以參考閱讀下2023-09-09Python利用wxPython制作一個(gè)有趣的驗(yàn)證碼生成器
這篇文章主要為大家詳細(xì)介紹了Python如何利用wxPython制作一個(gè)簡單有趣的驗(yàn)證碼生成器,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解一下2023-04-04Python for循環(huán)搭配else常見問題解決
這篇文章主要介紹了Python for循環(huán)搭配else常見問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程
在前后端分離的項(xiàng)目中,JWT(JSON?Web?Token)作為一種廣泛使用的身份驗(yàn)證和授權(quán)機(jī)制,提供了一種安全、高效的方式來保護(hù)RESTful?API,本文詳細(xì)介紹了JWT的概念、優(yōu)勢、在Django中的應(yīng)用步驟和使用方法,是構(gòu)建安全、高效Web應(yīng)用的有效指南2024-10-10