python爬虫采集京东商品评价
前两期给大家介绍了如何利用requests库爬取小说和图片,这一期就和大家分享一下如何爬取京东商品的评价信息,这里先设置爬取50页,以做日后分析。
准备工作
下面式要用到的库,请确保电脑中有以下库,没有的话请自行安装。
import requests
import json
import time
import random
一,查找商品并检查网页
在浏览器里打开京东网站,然后找一款你想研究的商品,这里我以华为P30手机为例(因本文内容不做深入研究,所以暂先不需要登录)然后在页面中右键选择检查(或F12)打开开发者模式。
二,查找评论链接
在网页中找到评论按钮并点击使其加载数据,然后我们点击network查看数据。接着查找加载评论数据的请求url,我们可以复制某条评论中的一段话,然后在调试窗口中(Ctrl+F)调用搜索框进行搜索,可以得到对应的结果:
三,发起requests请求
得到评论数据接口url之后,就可以开始写代码抓取数据了。我们先尝试抓取一条数据,成功之后,我们再去分析如何实现批量抓取。上一篇我们已经讲解了如何使用requests库发起http请求,我们来看看代码:
def spider_comment(page=0):url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchcomment98&productId=100004404944&' \'score=0&sortType=5&page=%s&pageSize=10&isShadowSku=0&fold=1' % pagetry:headers = {"referer": "https://item.jd.com/100004404944.html","user - agent": "Mozilla / 5.0"}r = requests.get(url, headers=headers)r.raise_for_status()except:print("error")
四,数据的提取
点击查找后得到的结果,可以得到一组字符串,这便就是我们想要得到的结果。当然,此数据为jsonp跨域请求返回的json结果,所以我们只要把前面的’ fetchJSON_comment98( '和最后的 ’ ) ’ 去掉就可以得到json数据了,因为每个商品的编号可能不同,所以这里不做统一。json以键值对的形式保存,其中有一个名称为comments的key里面存放这我们想要的评论数据。再对comments值进行分析发现它包含了评论的内容,时间,id等信息,我们想要得到的评价内容则隐藏在content字段中。
# 去除前后无用字符json_str = r.text[15:-2]# 将json转换为python对象json_obj = json.loads(json_str)# 获取评价列表comments = json_obj['comments']# 可以用for循环打印出所有评论for comment in comments:print(comment['content']+'\n')
五,数据存储
提取数据之后,我们将信息以TXT文本文件的格式保存起来,方便以后使用(这里提前创建好txt文件,只需循环写入即可)。
for comment in comments:with open('E:/python/resource/comments.txt', 'a+') as f:f.write(comment['content'])f.write('\n')
六,实现翻页,批量采集
完成第一页数据采集之后,我们来研究一下如何批量抓取?让我们看一看第一页评论数据的url:
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100004404944&score=0&sortType=5&
page=0&pageSize=10
&isShadowSku=0&rid=0&fold=1
可以看到链接里面有两个参数 page=0&pageSize=10,page表示当前的页数,pageSize表示每页多少条,所以使这里的数字发生改变就可以实现翻页的功能。了解了翻页的原理后,那我们就开始实现它吧。首先,找到第二页按钮并点击,然后复制第一条评价去调试窗口搜索(方法同上),然后点击Headers查看第二页请求数据的url:
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100004404944&score=0&sortType=5&
page=1&pageSize=10
&isShadowSku=0&rid=0&fold=1
通过比较第一页评价与第二页评价的url的区别,可以看出第一页page=0,第二页page=1,以此类推。所以只要在每次请求时将page参数递增就可以实现翻页了,这里可以利用迭代器来实现,(对spider_comment方法增加入参page:页数,然后在url中增加占位符,这样就可以动态修改url,爬取指定的页数)
。我们来看一下代码:
def change_page():for i in range(50):spider_comment(i)time.sleep(random.random() * 5)print("ok")
注:在for循环中设置了一个随机的休眠时间,用来模拟用户浏览,防止爬取太频繁被封ip
测试
最后调用主函数,实现爬虫:
if __name__ == '__main__':change_page()
让我们看一看爬取的结果吧!
附源代码:
# coding='utf-8'
import requests
import json
import time
import random
import jiebaheaders = {"referer": "https://item.jd.com/100004404944.html","user - agent": "Mozilla / 5.0"}def spider_comment(page=0):url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchcomment98&productId=100004404944&' \'score=0&sortType=5&page=%s&pageSize=10&isShadowSku=0&fold=1' % pagetry:r = requests.get(url, headers=headers)r.raise_for_status()except:print("error")# 获取json字符串json_str = r.text[15:-2]# 将json转换为python对象json_obj = json.loads(json_str)# 获取评价列表comments = json_obj['comments']# 遍历列表并写入for comment in comments:with open('E:/python/resource/comments.txt', 'a+') as f:f.write(comment['content'])f.write('\n')def change_page():for i in range(2):spider_comment(i)time.sleep(random.random() * 5)print("ok")if __name__ == '__main__':# spider_comment()change_page()
如有错误,欢迎私信纠正,谢谢支持!
python爬虫采集京东商品评价相关推荐
- 【python爬虫】京东商品分析
基于python的电商商品价格分析 一.选题背景 随着互联网的普及,网络购物已经成为了人们购物的首选,用户只需要在电商平台上进行自己喜欢的商品进行搜素,就可以得到成千上万条商品信息.而在购买商品时,商 ...
- python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据
前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...
- python翻页爬取京东商品评价
python翻页爬取京东商品评价 以小米手机评论为案例 1.找到目标的url 2.检查响应结果 3.解析json数据,发现相应数据无法成功解析 注意:json数据一般都是以大括号或中括号开头或者结尾的 ...
- 网络爬虫-爬取京东商品评价数据
前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...
- Python爬取京东商品评论数据
一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...
- 利用python爬取京东商品的详情信息
1.导入模块 import random import re import time import xlsxwriter from selenium import webdriver from lxm ...
- Python爬取京东商品评论和图片下载
Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...
- python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论
本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...
- 爬取京东商品评价并生成词云
上期为大家介绍了requests库的基本信息以及使用requests库爬取某东的商品页,收到了很多同学的反馈说期待猪哥的更新,猪哥感到非常开心,今天就带大家来玩一把刺激的! 一.需求背景 在实际开发过 ...
最新文章
- java语言基础final_java语言中final的用法
- 字符串 mysql索引,长字符串的MySQL索引
- Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass)
- 20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南07
- POJ 2513 Colored Sticks
- 飞畅 8口RS-485集线器产品性能参数介绍
- 网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...
- chechbox 的颜色android,Android 之 CheckBox 详解
- Spring包名代码提示
- flutter html 加载_实操 | 在 Flutter 中创建通信桥
- 【亲测有效】macOS无法验证此App不包含恶意软件
- 发动机关键零部件3D视觉引导自动上料和装配系统
- 什么是论文查重报告?
- Matlab的一些常用功能
- 修补计算机漏洞重启,win7系统出现严重的系统漏洞如何修复
- ATX结合Maxim实现多设备并行执行压力测试(AUI自动化测试框架)
- 在线密码生成工具推荐
- Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
- 论文阅读——“推荐系统”
- mesh 协调器 路由器_请TI技术支持和大神指点下,关于zigbee组建mesh路由网络的问题,谢谢!...