1. 网站分析

本文实现的爬虫是抓取京东商城指定苹果手机的评论信息。使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 JSON 对象,并提取其中感兴趣的信息。读者可以点击此处打开 京东商城,如下图所示:

URL 是 苹果手机商品 。商品页面如下图所示:

在页面的下方是导航条,读者可以单击导航条上的数字按钮,切换到不同的页面,会发现浏览器地址栏的 URL 并没改变,这种情况一般都是通过另外的通道获取的数据,然后将数据动态显示在页面上。那么如何来寻找这个通道的 URL 呢?

在 Chrome 浏览器的开发者工具的 Network 选项中单击 XHR 按钮,再切换到其他页,并没有发现要找的 API URL,可能京东商城获取数据的方式有些特殊,不是通过 XMLHttpRequest 发送的请求。

所以重新选中 All 按钮,显示所有的 URL。现在用另外一种方式寻找这个 URL,就是 Filter。通过左上角的 Filter 输入框,可以通过关键字搜索 URL,由于本文是抓取评论数据,所以可以尝试输入 comments,在左下角的列表中会出现如下图所示的内容。

在搜索结果中会看到 1个名为 productPageComments.action 的 URL ,单机这个 URL,在右侧切换到 Preview 选项卡,会看到如上图所示的内容,很明显,这是 JSON 格式的数据,展开 comments ,会看到有 10 项 ,这是返回的 10 条评论。在展开某一条评论,如下图所示:

从属性的内容可以看出,content 属性是评论内容,creationTime 是评论时间,days 是购买多长时间后才来评论的。通过 Headers 选项卡可以得到如下完整的 URL 。

https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100005492549&score=0&sortType=5&page=0&pageSize=10&isShadowSku=100008348530&fold=11

从这个 URL 可以看出,page 参数表示页数,从 0 开始,pageSize 参数表示每页获取的评论数,默认是 10,这个参数可以保留默认值,只改变 page 参数即可。

2. 示例代码 源码获取可后台私信小编01

根据前面的描述实现抓取苹果手机评论信息的爬虫,通过 fetch_comment_count 变量可以控制抓取的评论条数。最后将抓取的结果显示在控制台中。示例代码如下:

# -*- coding: UTF-8 -*-"""@author:AmoXiang@file:4.抓取京东苹果手机评论.py@time:2020/09/15"""import requestsimport jsonheaders = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'}fetch_comment_count = 1000  # 限定抓取的评论数index = 0  # 用于记录爬取到第几条评论page_index = 0  # 页码flag = True  # 用于控制循环是否退出while flag:    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100005492549&score=0&sortType=6&page={}&pageSize=10&isShadowSku=100008348530&rid=0&fold=1'.format(        page_index)    page_index += 1    res = requests.get(url=url, headers=headers)    text = res.text    # 下面的代码替换返回数据的部分内容,因为返回的数据并不是标准的 JSON 格式    json_str = text.replace('fetchJSON_comment98(', '')[:-2]    json_obj = json.loads(json_str)  # 将字符串转换为字典对象    comments_list = json_obj['comments']    comments_list_length = len(comments_list)    # 循环输出评论数据    for i in range(comments_list_length):        comments = comments_list[i]['content']        print(f'< {index + 1} > {comments}')        creation_time = comments_list[i]['creationTime']  # 获取评论时间        nickname = comments_list[i]['nickname']  # 获取昵称        print(creation_time)        print(nickname)        print("-" * 20)        index += 1        if index == fetch_comment_count:            flag = False            break

程序运行结果如下图所示:

3. 注意事项

  1. 京东商城如果频繁使用同一个 IP 发起大量请求,服务端会临时性封锁 IP,可以使用一些免费的代理。
  2. API URL 返回的数据并不是标准的 JSON,里面还有一些杂质,需要在本地将其删除。 本例有一个前缀是 fetchJSON_comment98 ,这个前缀是通过 URL 的 callback 参数指定的,根据参数名应该是个回调函数,具体是什么不需要管,总之,需要按照 callback 参数的值将返回数据的前缀去掉。

这个爬虫是不是感觉很简单!你学会了吗?

此文转载于博主,著作权归作者所有,如有侵权联系小编删除!

原文地址:https://blog.csdn.net/xw1680/article

XHR如何爬虫_Python爬虫实战之抓取京东苹果手机评价相关推荐

  1. python iphone 爬虫_Python爬虫实战之抓取京东苹果手机评价!

    1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 ...

  2. 抓取京东苹果手机评价!苹果手机质量还是非常不错的!

    1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 ...

  3. Python爬虫实战(二):抓取京东苹果手机评价

    目录 1. 网站分析 2. 示例代码 3. 注意事项 1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的 ...

  4. python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇

    前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...

  5. 爬虫基础篇之Scrapy抓取京东

    虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...

  6. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  7. python爬取网店数据_Python爬虫实现抓取京东店铺信息及下载图片功能示例

    本文实例讲述了Python爬虫实现抓取京东店铺信息及下载图片功能.分享给大家供大家参考,具体如下: 这个是抓取信息的 from bs4 import BeautifulSoup import requ ...

  8. Python爬虫编程思想(70): 项目实战--抓取京东商城手机销售排行榜

    本文的例子使用requests抓取京东商城手机销售排行榜,并使用pyquery和CSS选择器提取相关的信息,同时将这些信息保存到Excel文件中.本例抓取总排行榜,并单独提取Apple.华为和小米手机 ...

  9. python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕

    原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...

最新文章

  1. 计算机与新闻业未来发展,计算机学院举办“智创未来,谈思维与职业发展”活动...
  2. 入网许可证_入网许可证怎么办理,申请流程
  3. 通过R,让你的数据分析更简便!
  4. js 深拷贝 和 浅拷贝
  5. open函数返回-1_4.6 linux的系统调用执行探究(1)
  6. keyshot9怎么导入材质_你知道硬质合金刀片是怎么来的吗?讲解直观!
  7. 中国丝裂原活化蛋白激酶8市场趋势报告、技术动态创新及市场预测
  8. STC51几种简单的延时函数
  9. testlink界面优化_Testlink 太老了,测试用例管理有没有什么好工具推荐?
  10. hive sql教程
  11. 我们算了笔账,月薪过万可能还不配结婚!
  12. Python房贷计算器等额本息
  13. html表格添加序号,通过layui给数据表格添加序号
  14. mysql count函数 null_MySql中COUNT(XXX OR NULL)
  15. 高绩效团队-VUCA时代的五个管理策略《二》—代际管理
  16. RabbitMQ实现即时通讯-MQTT协议
  17. linux gcc strip命令简介
  18. 树形结构的数据与一维数组数据的相互转换
  19. NewStarCTF 公开赛赛道week3 web writeup
  20. 赵国荣教授治疗病毒性肝病临床经验述要

热门文章

  1. cmd运行java打印不出中文的解决办法
  2. html5audio兼容斗战神,CSGO语音包工具SLAMv1.5.4
  3. C. Obtain The String(二分)
  4. 6-5 在数组中查找指定元素 (15分)
  5. 3S基础知识:MapInfo自定义符号详解
  6. 图像融合:Exposure Fusion
  7. 网络与安全1【什么ARP***,IP地址欺骗都是浮云】买台300元的交换机搞定
  8. shell中竖线的作用_Shell中符号意义
  9. Glide加载自签名的https图片
  10. php 生成小程序二维码(扫码进入小程序)