您的位置:首页 > 编程语言 > Python开发

python 爬虫-京东用户评论数据和用户评分

2018-04-04 11:23 696 查看

python 爬虫-京东用户评论数据和用户评分

在京东页面查找(例如:oppo r15),选择第一个商品点击进入。



点击第一个评论页面:



点击第二个评论页面:



第三个评论页面:

 


发现第二页和第三页的网址是一样的,我们可以推测,访问第一页评论的网址也可以和2,3一样。

我们再次点击第一页:



发现确实如此

对于这种网站要爬取信息是比较难的(评论翻页,但是网址不变),可能评论信息是异步加载,需要抓包找到位置。

我们按下F12,进入浏览器的开发者模式(我用的是谷歌浏览器),选择其中的几个选项。



上面有很多信息,我们需要找到评论数据。之后点击禁止符号,意思是clear清除原有信息



选择评论的第二页:下面出现了一个文件



这就是我们需要的评论数据和网页地址


https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page=1&pageSize=10&isShadowSku=6560154&rid=0&fold=1
复制到浏览器看到评论数据



进入页面点击第3个页面:



https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page=2&pageSize=10&isShadowSku=6560154&rid=0&fold=1



观察两个页面的规律:只有page参数在变化
https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page=1&pageSize=10&isShadowSku=6560154&rid=0&fold=1
 

https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page=2&pageSize=10&isShadowSku=6560154&rid=0&fold=1

 

改变:page=3复制到浏览器参看

https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page=3&pageSize=10&isShadowSku=6560154&rid=0&fold=1



现在就找到了需要爬虫的评论数据,观察一个页面信息



从数据可以看到里面的评论数据和用户评分。这是我们需要的数据了。

实验代码如下:

import os
import re
import pandas as pd
import requests

if os.path.exists('comment.txt'):
os.remove('comment.txt')
else:
f = open('comment.txt','a')

count = 0
url = 'https://sclub.jd.com/comment/productPageComments.action?callback=\
fetchJSON_comment98vv1&productId=6790503&score=0&sortType=5&page='
url2 = '&pageSize=10&isShadowSku=6560154&rid=0&fold=1'

for i in range(0,10):#输入需要爬虫的页面数
try:
html = requests.get(url + str(i) + url2)
html = html.text

#使用正则提取评论信息
content1 = re.findall(r'"guid".*?,"content":(.*?),',html)

#对提取的评论信息进行去重
content2=[]
temp = ''
for c in content1:
if temp != c:
content2.append(c)
temp = c

#使用正则提取score字段信息
score = re.findall(r'"referenceImage".*?,"score":(.*?),',html)

for s,c in zip(score,content2):
count += 1
c = c.replace('\\n','')
f.write(str(count)+'\t' + str(s)+'\t' + c)
f.write('\n')

except:
print('爬取第'+str(i)+'页出现问题')
#        continue
break
f.close()


参考: https://ask.hellobi.com/blog/wangdawei/10230 http://bluewhale.cc/2016-12-15/use-python-to-capture-and-analyze-jingdong-product-reviews-data.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  爬虫 数据 京东 python