失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python动态爬虫爬取京东商品评论

Python动态爬虫爬取京东商品评论

时间:2020-06-17 19:21:38

相关推荐

Python动态爬虫爬取京东商品评论

Python 动态爬虫爬取京东商品评论

1. 概述

京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法。

动态爬虫,即针对动态加载JSON文件网页的爬虫,其原理与静态爬虫没有本质区别,只是不爬取所见的静态目标网页,而是寻找该网页所加载的JSON文件,爬取JSON文件中的内容。

2.目标观察

观察京东具体商品评论页面:

点击商品评价页:

发现商品评价翻页的url不改变,可推测出其采用动态加载的方式,同时,会发现直接获取该页面并没有评论的内容。

因此我们寻找其动态加载文件。

右键打开检查模式,点击network按钮:

在网页中点击下一页,观察右侧栏中新加载出来的文件:

发现可能是评论内容文件,点击查看,发现确实如此,复制下该文件的url:

3. 具体爬取

从上文中我们获取到了商品评论的动态加载文件的url,接下来我们至需要对该文件进行get爬取即可。

同静态爬虫类似,构造header,输入网址,并使用get进行请求,下载其文本内容。

header = {"user-agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}url = "/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100021400874&score=0&sortType=5&page=2&pageSize=10&isShadowSku=0&rid=0&fold=1"time.sleep(random.random())content = requests.get(url = url,headers = headers).text

然后我们观察get到的content内容,发现并不是静态网页的HTML,而是一种类似于字典的文本内容,这即是JSON文本格式,但京东获取到的JSON文本有干扰,不是一个完全的类似字典类型文本,因此我们需要去除掉花括号前后的无意义字符串:

if content != None:content = content.strip('fetchJSON_comment98vv385();')

然后我们使用json模块对其进行解析,并从中提取我们需要的信息:

jbs = json.loads(content)comments = jbs["comments"]for comment in comments:print(comment["id"],":",comment["content"])

从而我们就得到了京东商品评论。

4. 全部代码:

header = {"user-agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}url = "/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100021400874&score=0&sortType=5&page=2&pageSize=10&isShadowSku=0&rid=0&fold=1"time.sleep(random.random())content = requests.get(url = url,headers = headers).textif content != None:content = content.strip('fetchJSON_comment98vv385();')、jbs = json.loads(content)comments = jbs["comments"]for comment in comments:print(comment["id"],":",comment["content"])

如果觉得《Python动态爬虫爬取京东商品评论》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。