爬取京東評論,且修改網址直接可復用哦(送代碼)


文章轉載自公眾號 七天小碼哥 , 作者 小碼哥

                                                                                                   

 

 

本次python實戰,主要目標是利用 Python爬取京東商品評論數,如上圖所示:爬取“Python之父”推薦的小藍書,這些信息主要包括用戶名、書名、評論等信息。

 

爬取的網址url是 https://item.jd.com/12531181.html ,爬取后的結果會保存在csv文件里面,便於數據分析。

 

 

01

如何准備爬蟲環境?

其實不難

 

 

環境:MAC + Python3.6 ;  IDE:Pycharm.  具體使用的模塊如下。

 

  1.  
    import requests
  2.  
    import re
  3.  
    import json

 

但是如果你的系統上安裝了anaconda,模塊requests已經安裝完成,但是 pycharm軟件不能識別。

 

此時,需要使用preferences直接進行安裝,入下圖所示,點擊+,直接安裝即可。

 

 

 

 

02

爬蟲分析真的很重要

准備工作

 

 

我們的目標是爬取京東的《零基礎輕松學PYTHON》評論數,打開網頁發現評論的頁數很多。

 

也就是說我們需要解析多個頁面。因此,我們想到使用一個for循環來實現。

 

 

那么該如何找到評論的網址呢?首先,打開瀏覽器,比如chrome,然后右鍵選擇檢查,調出來網頁源代碼,如下圖:

 

 

然后,點擊Network選項卡,並且把左邊的網頁翻滾到評論數,最后搜索COMMEN。如下圖:你會發現紅框里面的URL。該網址就是我們爬取的網址。

 

 

 

具體的網址是  https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv36&productId=12531181&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1。通過觀察,我們發現page=0,pagesize=10等信息。

 

並且當你點擊下一頁時,您會發現page=2,而網址中的其他信息沒有變化,如圖所示:

 

 

因此,我們構造循環即可實現對多個網頁的爬取,比如100個網頁,代碼如下:

 

if __name__ == '__main__':
    # 循環100次
    for i in range(101):
        main(start=i)

 

 

03

真正開始爬取評論數

兩步走

 

 

根據以前爬蟲文章(爬蟲實戰)的解析 ,我們分2步爬取本次任務。第一步是解析網頁;第二步是爬取評論數並且保存文件。

 

為了方便代碼可復用性和簡潔,我們把兩步寫入兩個函數里,分別是begain_scraping()和python_coments(),代碼如下:

 

def main(start):
    """
    開始爬取
    :return:
    """
    # 第一步解析網頁
    comments_jd = begain_scraping(start)

    # 第二步 爬取評論並保存文件
    python_comments(comments_jd)

 

 

 

04

開始解析網頁

第一步

 

 

解析網頁,也就是編寫begain_scraping(),代碼如下:

 

 

首先,根據爬取的網址(https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv36&productId=12531181&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1,我們得到下面信息:

 

# 構造商品地址
url_jd = 'https://sclub.jd.com/comment/productPageComments.action?callback'
# 網頁信息
vari_p = {
    # 商品ID
    'productId': 12531181,  # 換成你想爬取的ID就可以了
    'score': 0,
    'sortType': 5,
    # 爬取頁面
    'page': page,
    'pageSize': 10,
}

 

為了防止反爬蟲,我們構造一個偽裝瀏覽器,然后開始爬取,代碼如下:

 

# 防止反爬蟲,不需要更換
headers = {
    'cookie': 'shshshfpaJsAhpiXZzNtbFCHZXchb60B240F81702FF',
    'referer': 'https://item.jd.com/11993134.html',
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}

comment_jd = requests.get(url=url_jd, params=vari_p, headers=headers)

 

 

05

開始爬取評論數並保存

第二步

 

 

開始爬取評論數並保存,也就是實現函數python_comment。本函數主要是對爬取的網頁解析,然后保存在CSV文件。這也是模塊化編程,邏輯清晰 ,代碼簡潔高效。具體代碼如下:

 

def python_comments(comment_resp):
    """
    爬取數據並且寫入評論
    :param comment_resp:
    :return:
    """
    comment_js = comment_resp.text

    comment_dict = json.loads(comment_js)
    comments_jd = comment_dict['comments']
    for comment in comments_jd:
        user = comment['nickname']
        color = comment['productColor']
        comment_python = comment['content']

        # 寫入文件
        with open('comments_jd.csv', 'a', newline='')as csv_file:
            rows = (user, color, comment_python)
            writer = csv.writer(csv_file)
            writer.writerow(rows)

 

 

06

爬取結果展示

效果

 

 

首先,在pycharm軟件控制台 ,您可以看到爬取頁面信息,如下:

 

 

另外,您會在項目下面, 多了一個CSV文件,就是我們保存的文件。打開看一下效果吧:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM