1. 程式人生 > 其它 >利用爬蟲爬取京東商品的評論資訊

利用爬蟲爬取京東商品的評論資訊

        在之前利用爬蟲爬取網頁的時候只是用到了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秒的操作是因為京東的反爬,沒有時間延時的話很快就會被封