1. 程式人生 > >京東手機評論的爬取

京東手機評論的爬取

開篇

做論文的時候,最多接觸的就是標準的資料集,幾乎不需要太多的結構化處理,下載下來就是可以直接載入使用的資料,課題是有關評論分析的,但是論文針對的都是英文資料,而國內電商平臺其實積累了大量的評論資料,沒有辦法通過官方渠道獲取,那麼我們就寫個爬蟲自己爬吧,我沒有系統地學過爬蟲,所以挑了一個比較好爬的網站。

獲取評論儲存的地址

首先我們選擇一個想要爬取的商品,開啟它的網址,這邊我選擇的是iphone8的手機評論

這裡最好使用谷歌瀏覽器,接下來就是需要我們去獲取評論的儲存網頁啦,我們右擊網頁,點選檢查,這時候會出現京東網頁的程式碼。

點選network,將disable cache選上,我們主要要查詢js網頁,所以點上js,這時候你查詢什麼網頁都沒有,所以重新整理一下網頁

這時候巢狀的網頁就全出來了,這時候你輸入product

這下就找到我們要爬取的網頁了。複製它的request url的地址放到位址列裡面開啟。

網頁開啟後就是這樣的,這就是我們需要爬取的內容,裡面囊括了我們需要的評論資訊,是以json的格式儲存的。有了地址我們就可以用python把它們一個個抓下來。下面是程式碼

# -*- coding: utf-8 -*-
import urllib.request
import json
import time
import random

def crawlProductComment(url):

    #讀取原始資料(注意選擇gbk編碼方式)
html = urllib.request.urlopen(url).read().decode('gbk') #從原始資料中提取出JSON格式資料(分別以'{'和'}'作為開始和結束標誌) jsondata = html[27:-2] #print(jsondata) data = json.loads(jsondata) #print(data['comments']) #print(data['comments'][0]['content']) #遍歷商品評論列表 comments = data['comments'
] return comments data = [] for i in range(0,350): #iphone8評論連結,通過更改page引數的值來迴圈讀取多頁評論資訊 url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv89597&productId=5001175&score=0&sortType=5&page=' + str(i) +'&pageSize=10&isShadowSku=0&fold=1' comments = crawlProductComment(url) data.extend(comments) #設定休眠時間 time.sleep(random.randint(31,33)) print('-------',i) with open('xiaomi_note_3.json','w') as f: json.dump(data,f)