python爬取京东评论

python爬取京东评论

这不是我的第一个爬虫,但大多数都是像这样简单粗暴的,因为一开始对于定义函数,然后再进行相应的操作,是比较困难的,这能直接写for循环语句。

首先,我们要明确我们的目标:从京东上爬取产品的评论。一般评论都是进行情感分析,但我还没进行到那一步,只能先进行相关数据爬取下来。

其次,找到数据源的京东官网首页,然后点击搜索框填入苹果笔记本,假设我们就只爬取第一个搜索结果。python爬取京东评论_第1张图片
python爬取京东评论_第2张图片

由于可以看到我们的评论是动态的,且可能不断更新,我们便在谷歌网页右键,点击检查,或者审查元素(电脑不一样,说法不一样),就是以下这种界面.
python爬取京东评论_第3张图片
点击右上角的network,发现下面是空的,我们刷新页面,network下面就有东西了,但是我们需要评论,直接下拉到评论,网址不会改变,我们可以点击下一页,网址就会变成https://item.jd.com/5225346.html#comment,多了#comment部分,但同时在右边找到了评论所在的JS,具体怎么找呢,我们先点击JS,然后从最下面找,主要看Response,若是在Response里面找到了评论,那就是在那里,然后点击Headers,找到我们需要的URL。
python爬取京东评论_第4张图片
python爬取京东评论_第5张图片

然后,我们便开始进行相应的爬虫第一步:

# 导入必要的包
import requests
import json
# header这个的作用在于伪装成浏览器进行操作,有些网页识别到不是浏览器就不能访问,User-Agent能伪装
# User-Agent可以用不同个,一般在刚刚找网页网址url的Headers的下面就有,当然也可以使用手机的,可网页搜索找到不同的User-Agent,都能进行相应操作
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"}

url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&rid=0&fold=1'
# 我们可以简单的解析这个网址,前面不动,后面的我们点击下一页,看会出现什么改变
#https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1
# 我们发现只有page在变化,根据这个我们可以进行翻页爬取,我们先进行第一页的操作

# 先向浏览器发送请求
response = requests.get(url, headers=header)
data = response.text
# 由于爬取下来的data太大,就不展示了
jd = json.loads(data.lstrip('fetchJSON_comment98vv12345(').rstrip(');'))
data_list = jd['comments']
for data in data_list:
     buyer_id = data['id']  # 评论买家id
     content = data['content'] # 评论内容
     time = data['creationTime']  # 评论时间
out[1]:
13698518291 19年的愿望终于实现了,买一台MAC电脑,用起来体验真的太棒了,非常流程,开关机超级快,用惯了win的我,习惯了几天,现在可以轻松操作了,电池也非常耐用,可以用8小时以上不成问题,真是工作必备,超级满意! 2020-01-08 16:01:39
13843231135 运行速度:感觉比windows 快,蛮顺畅
屏幕效果:屏幕色彩真的是非常棒,真的无与伦比!!
散热性能:不太懂,但感觉可以,没感觉到发热。
外形外观:看超来超薄,充满立体感
轻薄程度:感觉很薄,但能感觉出的分量充满安全感
其他特色:音效是真的很立体很不错!!!! 2020-02-26 15:20:21

这样,简单的一页评论10条就爬取下来了,若是要翻页爬取的话,可以写一个循环,先写一个爬取10页的:

for page in range(0,10+1):
    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(page) 
    response = requests.get(url, headers=header) 
    data = response.text  
    jd = json.loads(data.lstrip('fetchJSON_comment98vv12345(').rstrip(');')) 
    data_list = jd['comments'] 
    for data in data_list:      
        buyer_id = data['id']      
        content = data['content']      
        time = data['creationTime']

这样我们就能获取苹果笔记本第一个产品的前100条评论。
python爬取京东评论_第6张图片

*注意:
*我们在获取网页响应时,网页编码是比较麻烦的,一般的如果是utf-8,我们就用text,若是乱码,可以用content,获得原始网页,然后为了显示正常,可以解码content.decode(‘gbk’),解码还是看源码是什么格式的。

当然,我只是简单是爬取了三种属性,大家可以爬取热评词,好评数等等。还可以继续增加页数,或者增加产品数,可以一直用for循环,虽然没有函数简单,但是很清楚。最后的目标就是输入关键词、开始页、终止页,输出相关的属性,比如产品的价格,产品的好评数等等。类似于下图:
python爬取京东评论_第7张图片
python爬取京东评论_第8张图片

这是比较笨的循环方法,我之前比较喜欢,简单粗暴,但为了代码美观,我还是换了函数类的,可以爬取知网信息。之后有时间会继续介绍。

补充说明:这篇文章主要是因为评论是以JS的格式保存在网页中,因此我们需要慢慢找到相应的JS网页。后期有时间,会进一步实现价格、评论爬取等等。

你可能感兴趣的:(python爬取京东评论)