溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python基于BeautifulSoup如何爬取京東商品信息

發(fā)布時(shí)間:2020-07-20 15:03:55 來源:億速云 閱讀:237 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是Python基于BeautifulSoup如何爬取京東商品信息,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

今天小編利用美麗的湯來為大家演示一下如何實(shí)現(xiàn)京東商品信息的精準(zhǔn)匹配~~

HTML文件其實(shí)就是由一組尖括號構(gòu)成的標(biāo)簽組織起來的,每一對尖括號形式一個(gè)標(biāo)簽,標(biāo)簽之間存在上下關(guān)系,形成標(biāo)簽樹;因此可以說Beautiful Soup庫是解析、遍歷、維護(hù)“標(biāo)簽樹”的功能庫。

如何利用BeautifulSoup抓取京東網(wǎng)商品信息

Python基于BeautifulSoup如何爬取京東商品信息

首先進(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)頁源碼如下圖所示:

Python基于BeautifulSoup如何爬取京東商品信息

狗糧信息在京東官網(wǎng)上的網(wǎng)頁源碼

仔細(xì)觀察源碼,可以發(fā)現(xiàn)我們所需的目標(biāo)信息是存在<li data-sku="*****" class="gl-item">標(biāo)簽下的,那么接下來我們就像剝洋蔥一樣,一層一層的去獲取我們想要的信息。

直接上代碼,如下圖所示:

Python基于BeautifulSoup如何爬取京東商品信息

請求網(wǎng)頁,獲取源碼

通常URL編碼的方式是把需要編碼的字符轉(zhuǎn)化為%xx的形式,一般來說URL的編碼是基于UTF-8的,當(dāng)然也有的于瀏覽器平臺有關(guān)。在Python的urllib庫中提供了quote方法,可以實(shí)現(xiàn)對URL的字符串進(jìn)行編碼,從而可以進(jìn)入到對應(yīng)的網(wǎng)頁中去。

之后利用美麗的湯去提取目標(biāo)信息,如商品的名字、鏈接、圖片和價(jià)格,具體的代碼如下圖所示:

Python基于BeautifulSoup如何爬取京東商品信息

利用美麗的湯去提取目標(biāo)信息

在本例中,有個(gè)地方需要注意,部分圖片的鏈接是空值,所以在提取的時(shí)候需要考慮到這個(gè)問題。其解決方法有兩個(gè),其一是如果使用img['src']會有報(bào)錯(cuò)產(chǎn)生,因?yàn)槠ヅ洳坏綄?yīng)值;但是使用get['src']就不會報(bào)錯(cuò),如果沒有匹配到,它會自動(dòng)返回None。此外也可以利用try+except進(jìn)行異常處理,如果匹配不到就pass,小伙伴們可以自行測試一下,這個(gè)代碼測速過程在上圖中也有提及哈。使用get方法獲取信息,是bs4中的一個(gè)小技巧,希望小伙伴們都可以學(xué)以致用噢~~~

最后得到的效果圖如下所示:

Python基于BeautifulSoup如何爬取京東商品信息

最終效果圖

新鮮的狗糧出爐咯~~~

看完這篇關(guān)于Python基于BeautifulSoup如何爬取京東商品信息的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI