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

  • 2019 年 10 月 6 日
  • 筆記

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

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

01

如何準備爬蟲環境?

其實不難

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

import requests  import re  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文件,就是我們保存的文件。打開看一下效果吧:

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

Tags: