Python动态爬虫爬取京东商品评论[通俗易懂]Python动态爬虫爬取京东商品评论1.概述京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法。动态爬虫,即针对动态加载JSON文件网页的爬虫,其原理与静态爬虫没有本质区别,只是不爬取所见的静态目标网页,而是寻找该网页所加载的JSON文件,爬取JSON文件中的内容。2.目标观察观察京东具体商品评论页面:点击商品评价页:发现商品评价翻页的url不改变,可推测出其采用动态加载的方式,同时,会发现直接获取该
大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。 Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Python 动态爬虫爬取京东 商品评论
1. 概述
京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法。
动态爬虫,即针对动态加载JSON文件网页的爬虫,其原理与静态爬虫没有本质区别,只是不爬取所见的静态目标网页,而是寻找该网页所加载的JSON文件,爬取JSON文件中的内容。
2.目标观察
观察京东具体商品评论页面:
发现可能是评论内容文件,点击查看,发现确实如此,复制下该文件的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 = "https://club.jd.com/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 = "https://club.jd.com/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
if content != None :
content = content. strip( 'fetchJSON_comment98vv385();' ) 、
jbs = json. loads( content)
comments = jbs[ "comments" ]
for comment in comments:
print ( comment[ "id" ] , ":" , comment[ "content" ] )
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159486.html 原文链接:https://javaforall.net