利用爬蟲爬取京東商品的評論資訊
阿新 • • 發佈:2022-03-17
在之前利用爬蟲爬取網頁的時候只是用到了html解析,但要獲得大量的評論內容時,只從html頁面解析並不能滿足要求,那麼只能直接獲取相關資料
進入京東商品介面,F12開啟開發人員工具,開啟network
重新整理頁面,會發現大量內容出現
點選評論,檢視評論資訊,開發人員工具也會隨著增加內容,新增加的內容會在工具中的時間軸動態的出現
可以如上圖在時間軸上劃定範圍,減少要檢視的內容。
記下來檢視內容,選擇符合要求的如
內容的url地址是有一定的規律的:如上面內容的地址
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10337898566&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
其中score表示使用者評論的分類,0是全部分類,1是差評分類;page代表內容的頁數,等同於頁面上的一頁評論。page最多為99,因為京東頁面前端最多提供100頁的評論,爬蟲能爬取大量的內容是通過修改該引數進行的
接下來就是用爬蟲對內容進行相關的爬取和解析了
from bs4 import BeautifulSoup import requests Headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } def getData(page): #內容url url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100014352539&score=1&sortType=5&page='+str(page)+'&pageSize=10&isShadowSku=0&fold=1' response=requests.get(url=url,headers=Headers,timeout=10) soup=BeautifulSoup(response.text,'lxml') #對獲得的頁面字元進行處理,並轉成字典 context=eval(soup.find("p").text.replace("fetchJSON_comment98(","").replace(");","").replace("null","None").replace("false","False").replace("true","True")) print(type(context)) print(context) if __name__=='__main__': for i in range(0,100): getData(i) n=random.randint(1,5) time.sleep(n)
程式碼中有將程式迴圈延時1-5秒的操作是因為京東的反爬,沒有時間延時的話很快就會被封