python批量评论_python批量爬取京东手机评论信息及星级

本科生在读,如有问题欢迎指正

爬取京东评论信息:评论信息是动态加载的,所以在商品详情页不能直接爬取评论。

下面以一款手机为例,详细介绍python批量爬取京东评论。

找到评论区域

image.png

按F12进入浏览器的调试窗户(我用的是谷歌浏览器)

点击network,选择all,接下来点击评论第二页,选择js,可以找到加载评论的链接(正常应该选择all,一点点找,我之前已经找到过链接,直接在js处找了),评论的链接通常含有comment单词,也可以在调试器中搜索找到。

image.png

接下来右键-->copy-->copy link address复制下来评论信息的正式地址,输入浏览器地址栏可以看到评论信息如下,json格式,爬取后可直接提取评论信息。

image.png

接下来开始编写爬虫代码

基本每行代码都有了详细注释,请认真读

# -*- coding:utf-8 -*-

import requests

import json

import time

import random

import xlwt

# 创建excell保存数据

file = xlwt.Workbook(encoding='utf-8')

sheet = file.add_sheet('data', cell_overwrite_ok=True)

for i in range(105): #for循环遍历,批量爬取评论信息

try:

#构造url,通过在网页不断点击下一页发现,url中只有page后数字随页数变化,批量遍历就是根据这个

#url去掉了callback部分,因为这部分内没有有用数据,并且不去掉后面转换为json格式会有问题

url = 'https://club.jd.com/comment/productPageComments.action?&productId=100008348542&score=3&sortType=5&page=%s&pageSize=10&isShadowSku=0&rid=0&fold=1' % i

#构造headers

headers = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',

'referer': 'https://item.jd.com/100008348542.html'

}

response = requests.get(url, headers=headers)

data = json.loads(response.text) # 字符串转换为json数据

page = i * 10 #这里是存储在excell中用到的,因为每爬取一个url会有10条评论,占excell 10列

if(data['comments']):

for temp in data['comments']:

sheet.write(page, 0, page) #序号

sheet.write(page, 1, temp['content']) #评论

sheet.write(page, 2, temp['score']) #用户打的星级

page = page + 1

print('第%s页爬取成功' % i)

else:

print('.............第%s页爬取失败' %i)

file.save('F:\\t\\t.xlsx') #保存到本地

except Exception as e:

print('爬取失败,url:%s'%url)

print('page是%s'%i)

continue

time.sleep(random.random() * 5) #每循环一次,随机时间暂停再爬

file.save('F:\\t\\t.xlsx')

你可能感兴趣的:(python批量评论)