京东商城评论区的爬取
‘’’
注意:
1.访问网页时返回的数据时json类型,无法使用etree对HTML进行解析,使用xpath来获取想要的数据
2.在requests库中,提供了响应对象的json方法,用来对json格式的响应体进行反序列化
3.得到了由json转换成的字典后,参照Fech/HXR中Preview的结构,便可利用遍历字典的方式来获取我们想要的数据
‘’’
import fake_useragent
import requests
#指定url
url = "https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1710897833040&loginType=3&uuid=181111935.17108518443021816314079.1710851844.1710856131.1710897432.3&productId=10096776496389&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield="
#将读取的文件写到./jingdong.txt中
fp = open("./jingdong.txt","w+",encoding="utf-8")
# 设置UA伪装
head = {
"User-Agent": fake_useragent.UserAgent().random
}
# 发送请求
response = requests.get(url, headers=head)
# 获取响应的数据
#设置response_dict来接收json转化后的字典
response_dict = response.json()
'''
在requests库中,不用json.loads方法进行反序列化(将json数据转化为字典),
而是提供了响应对象的json方法,用来对json格式的响应体进行反序列化
比如:
r = requests.get(url)
r.json()
'''
#验证返回的数据类型为字典
# print(type(response_dict))
#利用遍历字典的方式来获取我们想要的数据
for comment in response_dict['comments']:
#replace方法,用“ ”来替代换行符
#爬取所有的评论
content_list = comment['content'].replace("\n", "")
#爬取手机颜色
productColor_list = comment['productColor'].replace("\n", "")
#爬取手机型号
productSize_list = comment['productSize'].replace("\n", "")
#爬取手机名称
referenceName_list = comment['referenceName'].replace("\n", "")
# print(content_list+","+productColor_list+","+productSize_list+","+referenceName_list)
fp.write(content_list+","+productColor_list+","+productSize_list+","+referenceName_list+"\n")
fp.close()