京东书籍信息及评论内容爬取
京东书籍信息及评论内容爬取
文章目录
- 京东书籍信息及评论内容爬取
- 前言
- 一、京东书籍商品页面分析
- 二、解析获取评论数
- 1.每个商品都有一个唯一的ID
- 2.分析标签,找到过滤词,进而找到需要的请求头
- 3.根据请求头格式,获取商品的评论数
- 三、解析获取评论内容
- 1.解析商品评论内容页面
- 2.找到异步加载商品评论内容的请求格式
- 3.根据请求头模板,得到评论内容
- 总结
前言
本文演示如何从京东爬取书籍信息及评论内容,使用的方法是通过JS分析进行反反爬,不是通过selenium自动化操作,有兴趣的可以参考。
一、京东书籍商品页面分析
从京东首页通过搜索“书籍”来到上图显示页面,现在我要获取这些书籍的【书名】【价格】【评论数】【评论内容】,可以发现如果直接通过requests库直接获取当前页面源代码,只能得到【书名】【价格】,【评论数】在网页源代码中是没有的,是通过JS异步加载的,【评论内容】需要进到每个商品页面去获取,我们后面再说。
这里是页面显示代码
这里是网页源代码
二、解析获取评论数
1.每个商品都有一个唯一的ID
我们不难发现,每个商品都有对应的唯一ID,访问的商品信息都是通过这个ID来确定的
2.分析标签,找到过滤词,进而找到需要的请求头
我们找到【评论数】的div标签,可以发现里面有一个链接,我们点击可以发现是进入到该书【评论内容】的详情页。
可以发现,里面有一个comment的锚点,前面的a标签的id属性也是(J_comment_31107521323),也有comment这个词,所以我们就尝试查询一下JS文件
结果发现,还真有一个含有商品ID的response返回值,进一步复制出来然后JS美化后得到如下结果
这下就发现,这里面全是商品ID+【评论数】的JSON数据,我们这下在看看请求头
请求的URL:
"https://club.jd.com/comment/productCommentSummaries.action?referenceIds=31107521323,12853906,30116314655,12811942,11970990,13018250,12676018,12498290,12685579,13014236,12653936,12198327,10035634301195,12852516,12768022,13230382,12842790,12856392,56781299750,12579171,11721635,12819136,12882834,10031271962785,11554593536,71871365788,12869807,12610467,12070013,12699287&callback=jQuery9893453&_=1638104433087"
可以发现,获取商品【评论数】数据的请求格式为:
“https://club.jd.com/comment/productCommentSummaries.action?referenceIds=[商品ID]”
3.根据请求头格式,获取商品的评论数
我们尝试一下直接访问,得到如下结果:
好了,说明是没有问题的了,现在开始获取【书名】【价格】【评论数】
import requests
from lxml import etree
import json
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}#访问书籍页面得到里面的书名,价格和商品的ID
start_url = "https://search.jd.com/Search?keyword=书籍"
resp = requests.get(start_url, headers=headers)
text = resp.text
html = etree.HTML(text)
li_list = html.xpath("//div[@id='J_goodsList']/ul/li")
books_info = []
for li in li_list:book_ID= li.xpath("./@data-sku")[0]title = "".join(li.xpath(".//div[@class='p-name']//em/text()"))price = li.xpath(".//div[@class='p-price']//i/text()")[0]book_info = [book_ID,title,price]books_info.append(book_info)#通过ID请求评论数数据
for i in range(0,5):url = "https://club.jd.com/comment/productCommentSummaries.action?referenceIds=%s"%books_info[i][0]resp = requests.get(url, headers=headers, proxies=proxy)text = resp.textdic = json.loads(text) #将字符串格式转换为JSON对象comment_num = dic['CommentsCount'][0]['CommentCountStr']
三、解析获取评论内容
1.解析商品评论内容页面
我们进入到商品页面去找评论内容,首先,我们不要下拉,也不要点击【商品评价】,可以发现,刚进入商品页面时,在网页源代码中是没有商品的评论内容的:
现在我们点击【商品评价】后来看:
这说明评论的内容也是异步加载的,并不是一开始就出现,点击之后网页源代码中也是没有的
2.找到异步加载商品评论内容的请求格式
现在我们来到谷歌开发者工具里面的Network下,选择JS文件,过滤词还是comment,然后刷新页面:
可以发现,此时只有含有商品评论数的数据返回,我们再点击【商品评价】后再看:
可以发现多出来了3个JS文件,我们依次点击查看,在最后一个发现里面发现了我们想要的评论内容,美化后发现和【评论数】返回的结果类似,都是JSON数据
剩下的就简单了,一样分析请求头:
"https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=31107521323&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
格式为:
"https://club.jd.com/comment/productPageComments.action?productId=[商品ID]
&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
#这后面的是页码选取,有需要自己分析,我这里只选前第一页前10条评论
3.根据请求头模板,得到评论内容
这里直接上代码了
for i in range(0,5):url = "https://club.jd.com/comment/productPageComments.action?productId=%s&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"%books_info[i][0]resp = requests.get(url, headers=headers)text = resp.textdic = json.loads(text)dic_list = dic['comments']comment_contents = []for i in dic_list:comment_content = i['content']comment_contents.append(comment_content)
总结
爬取京东这类反爬比较强的网站,通过分析JS得到数据,虽说分析过程比较难,但是最后代码很简单,也不容易被反爬机制查出,但是用selenium自动化操作,虽说不用有很深的JS功底,也不用去分析JS文件,但是比较容易被反爬机制查出。
京东书籍信息及评论内容爬取相关推荐
- 大数据信息资料采集:视频信息采集及评论内容爬取八爪鱼采集规则
大数据信息资料采集:视频信息采集及评论内容爬取八爪鱼采集规则 数据采集满足多种业务场景:适合产品.运营.销售.数据分析.政府机关.电商从业者.学术研究等多种身份职业. 舆情监控:全方位监测公开信息,抢 ...
- Python爬取京东书籍信息(包括书籍评论数、简介等)
Python爬取京东书籍信息(包括书籍评论数.简介等) 一. 工具 二. 准备爬取的数据 三. 内容简述 四. 页面分析 (一) 寻找目录中商品所在标签 (二) 寻找页面中能爬取到的所有数据 (三) ...
- 腾讯新闻评论数据爬取
前言 鉴于最近在做观点挖掘的相关工作,观点的数据源是网络评论数据,于是第一个想到的就是新闻观点数据,一个热门的新闻可能一晚上就会有上万条评论,所以如何分析并利用好这些评论信息,将会是一件非常有意思的事 ...
- 爬虫项目八:Python对天猫商品数据、评论数据爬取
文章目录 前言 一.商品数据 1.分析url 2.登录账号 3.解析数据 4.模拟滑动滑块 二.评论数据 1.分析url 2.解析数据 前言 天猫商城商品数据.评论数据爬取 提示:以下是本篇文章正文内 ...
- Python豆瓣电影评论的爬取及词云显示
Python豆瓣电影评论的爬取及词云显示 课程设计论文链接 前言 开发工具.核心库 系统相关技术介绍 系统分析与设计 系统功能模块组成 实现功能和目标 爬取模块设计 爬取过程中下一页的处理 窗口界面设 ...
- python爬虫实践-01-携程酒店评论的爬取
0 关键 携程网其最大的特点就是:基本上所有的有效数据都是通过Ajax异步请求获取的.本博客的主要内容为: 构造Ajax请求,获得返回的reviews数据,由于返回的数据为JSON格式,很好分析 判定 ...
- python爬取豆瓣电影评论_python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法...
def getHtml(url): """获取url页面""" headers = {'User-Agent':'Mozilla/5.0 ( ...
- python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?
开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...
- 豆瓣电视剧评论的爬取以及进行情感分析+生成词云
很多时候我们要了解一部电视剧或电影的好坏时都会去豆瓣上查看评分和评论,本文基于豆瓣上对某一部电视剧评论的爬取,然后进行SnowNLP情感分析,最后生成词云,给人一个直观的印象 1. 爬取评论 以前段时 ...
最新文章
- 网友评选2020年人生十大遗憾,考好大学列在第一
- 下载了python在哪里写代码-通过python下载FTP上的文件夹的实现代码
- BroadcastReceiver的思考(3)
- zabbix监控windows进程
- linux重启sshd命令,重启sshd服务
- vue中v-for的使用
- 群晖 上传 源文件不存在_群晖NAS连接百度网盘报错?原因是这样的
- vue.js koa2 mysql_nodejs-koa2-mysql-sequelize-jwt
- python生成序列_python中生成一个指定长度的列表,按1,2,3的序列生成
- the road to TCPIP(1)--TCPIP详解--数据链路层
- 基于JAVA《Python程序设计》教辅系统计算机毕业设计源码+系统+lw文档+部署
- python日志:去掉noteexpress导出参考文献题录的空格
- sast/dast/iast对比介绍
- 更改服务器进bios修改启动项,bios设置修改开机启动项的方法
- 算法竞赛命题指南(命题流程、Polygon的使用等)
- linux内存占用率高怎么办,Linux下如何解决高内存使用率问题?
- SWITCH 和ROUTE的故事(来自Csico论坛)
- 蓝牙耳机厂家畅谈ANC主动降噪耳机将引领蓝牙耳机市场趋势
- 小米5s Plus安装类原生系统
- FNDLOAD命令整合
热门文章
- Linux使用Geany开发gtk程序教程
- GOOGLE 人机验证(RECAPTCHA)无法显示解决方案(可解决大多数 CSP 问题)
- 病人信息管理html,基于JSP住院病人信息管理系统本科.doc
- web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作...
- 笔记本电脑右下角的电池图标不显示如何找出
- 手机软件测试自学乐器,自学乐器不难!——从用好这6款APP开始吧
- android+代码调用+相册+小米,Android调用系统相册选择图片,支持小米4云相册
- cocos creator 显示截图并保存图片到手机
- scons与Madagascar!
- 尼古拉·特斯拉,到底有多神?