前两期给大家介绍了如何利用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爬虫采集京东商品评价相关推荐

  1. 【python爬虫】京东商品分析

    基于python的电商商品价格分析 一.选题背景 随着互联网的普及,网络购物已经成为了人们购物的首选,用户只需要在电商平台上进行自己喜欢的商品进行搜素,就可以得到成千上万条商品信息.而在购买商品时,商 ...

  2. python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  3. python翻页爬取京东商品评价

    python翻页爬取京东商品评价 以小米手机评论为案例 1.找到目标的url 2.检查响应结果 3.解析json数据,发现相应数据无法成功解析 注意:json数据一般都是以大括号或中括号开头或者结尾的 ...

  4. 网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  5. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  6. 利用python爬取京东商品的详情信息

    1.导入模块 import random import re import time import xlsxwriter from selenium import webdriver from lxm ...

  7. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

  8. python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...

  9. 爬取京东商品评价并生成词云

    上期为大家介绍了requests库的基本信息以及使用requests库爬取某东的商品页,收到了很多同学的反馈说期待猪哥的更新,猪哥感到非常开心,今天就带大家来玩一把刺激的! 一.需求背景 在实际开发过 ...

最新文章

  1. java语言基础final_java语言中final的用法
  2. 字符串 mysql索引,长字符串的MySQL索引
  3. Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass)
  4. 20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南07
  5. POJ 2513 Colored Sticks
  6. 飞畅 8口RS-485集线器产品性能参数介绍
  7. 网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...
  8. chechbox 的颜色android,Android 之 CheckBox 详解
  9. Spring包名代码提示
  10. flutter html 加载_实操 | 在 Flutter 中创建通信桥
  11. 【亲测有效】macOS无法验证此App不包含恶意软件
  12. 发动机关键零部件3D视觉引导自动上料和装配系统
  13. 什么是论文查重报告?
  14. Matlab的一些常用功能
  15. 修补计算机漏洞重启,win7系统出现严重的系统漏洞如何修复
  16. ATX结合Maxim实现多设备并行执行压力测试(AUI自动化测试框架)
  17. 在线密码生成工具推荐
  18. Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
  19. 论文阅读——“推荐系统”
  20. mesh 协调器 路由器_请TI技术支持和大神指点下,关于zigbee组建mesh路由网络的问题,谢谢!...

热门文章

  1. 二阶常系数齐次线性微分方程的解法
  2. 简单说明CGI是什么
  3. SpringBoot整合Freemarker导出word文档表格
  4. 【C语言结构体题】定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和成绩信息,计算总分,并按总分由高到低输出。
  5. 国际移动设备识别码IMEI
  6. 英特尔睿频加速技术概况(Turbo Boost)
  7. 计算6+德州扑克各个牌型的概率
  8. 推荐4款最好用的远程桌面访问软件,亲测好评
  9. 瑞萨Ez-cube仿真器引脚与4线接口对应关系
  10. python中break怎么用_详解Python中break语句的用法