Python基于BeautifulSoup爬取京東商品信息
今天小編利用美麗的湯來(lái)為大家演示一下如何實(shí)現(xiàn)京東商品信息的精準(zhǔn)匹配~~
HTML文件其實(shí)就是由一組尖括號(hào)構(gòu)成的標(biāo)簽組織起來(lái)的,每一對(duì)尖括號(hào)形式一個(gè)標(biāo)簽,標(biāo)簽之間存在上下關(guān)系,形成標(biāo)簽樹(shù);因此可以說(shuō)Beautiful Soup庫(kù)是解析、遍歷、維護(hù)“標(biāo)簽樹(shù)”的功能庫(kù)。
如何利用BeautifulSoup抓取京東網(wǎng)商品信息
首先進(jìn)入京東網(wǎng),輸入自己想要查詢的商品,向服務(wù)器發(fā)送網(wǎng)頁(yè)請(qǐng)求。在這里小編仍以關(guān)鍵詞“狗糧”作為搜索對(duì)象,之后得到后面這一串網(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。之后請(qǐng)求網(wǎng)頁(yè),得到響應(yīng),爾后利用bs4選擇器進(jìn)行下一步的數(shù)據(jù)采集。
商品信息在京東官網(wǎng)上的部分網(wǎng)頁(yè)源碼如下圖所示:
狗糧信息在京東官網(wǎng)上的網(wǎng)頁(yè)源碼
仔細(xì)觀察源碼,可以發(fā)現(xiàn)我們所需的目標(biāo)信息是存在<li data-sku='*****' class='gl-item'>標(biāo)簽下的,那么接下來(lái)我們就像剝洋蔥一樣,一層一層的去獲取我們想要的信息。
直接上代碼,如下圖所示:
請(qǐng)求網(wǎng)頁(yè),獲取源碼
通常URL編碼的方式是把需要編碼的字符轉(zhuǎn)化為%xx的形式,一般來(lái)說(shuō)URL的編碼是基于UTF-8的,當(dāng)然也有的于瀏覽器平臺(tái)有關(guān)。在Python的urllib庫(kù)中提供了quote方法,可以實(shí)現(xiàn)對(duì)URL的字符串進(jìn)行編碼,從而可以進(jìn)入到對(duì)應(yīng)的網(wǎng)頁(yè)中去。
之后利用美麗的湯去提取目標(biāo)信息,如商品的名字、鏈接、圖片和價(jià)格,具體的代碼如下圖所示:
利用美麗的湯去提取目標(biāo)信息
在本例中,有個(gè)地方需要注意,部分圖片的鏈接是空值,所以在提取的時(shí)候需要考慮到這個(gè)問(wèn)題。其解決方法有兩個(gè),其一是如果使用img[’src’]會(huì)有報(bào)錯(cuò)產(chǎn)生,因?yàn)槠ヅ洳坏綄?duì)應(yīng)值;但是使用get[’src’]就不會(huì)報(bào)錯(cuò),如果沒(méi)有匹配到,它會(huì)自動(dòng)返回None。此外也可以利用try+except進(jìn)行異常處理,如果匹配不到就pass,小伙伴們可以自行測(cè)試一下,這個(gè)代碼測(cè)速過(guò)程在上圖中也有提及哈。使用get方法獲取信息,是bs4中的一個(gè)小技巧,希望小伙伴們都可以學(xué)以致用噢~~~
最后得到的效果圖如下所示:
最終效果圖
新鮮的狗糧出爐咯~~~
小伙伴們,有沒(méi)有發(fā)現(xiàn)利用BeautifulSoup來(lái)獲取目標(biāo)信息比正則表達(dá)式要簡(jiǎn)單一些呢
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. jsp實(shí)現(xiàn)簡(jiǎn)單用戶7天內(nèi)免登錄2. 讓 Asp 與 XML 交互3. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))4. xml文件的結(jié)構(gòu)解讀第1/2頁(yè)5. ASP 連接Access數(shù)據(jù)庫(kù)的登陸系統(tǒng)6. html5手機(jī)觸屏touch事件介紹7. 怎樣打開(kāi)XML文件?xml文件如何打開(kāi)?8. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)9. HTML基礎(chǔ)詳解(下)10. ASP.NET MVC實(shí)現(xiàn)登錄后跳轉(zhuǎn)到原界面
