Python爬虫实战之抓取京东苹果手机评价!

news/2024/10/18 20:19:53/

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=1
1

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

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

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

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:4.抓取京东苹果手机评论.py
@time:2020/09/15
"""
import requests
import 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 += 1res = 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 += 1if index == fetch_comment_count:flag = Falsebreak

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

3. 注意事项

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

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

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

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

 

 


http://www.ppmy.cn/news/338884.html

相关文章

RMAA对多个平台手机音质的评价

m9的音质还可以&#xff0c;比ip4和i9000还有差距 http://bbs.meizu.com/thread-2305009-1-1.html 测试成绩在这&#xff0c;测试方法正确&#xff0c;数码多媒体的昆刚是我的老朋友了&#xff0c;他一般不会犯低级错误。 其他手机的测试成绩在这。关于音质、测试原理、指标…

Python爬虫实战:抓取京东苹果手机评价

目录 1. 网站分析2. 示例代码3. 注意事项 很多人学习python&#xff0c;不知道从何学起。 很多人学习python&#xff0c;掌握了基本语法过后&#xff0c;不知道在哪里寻找案例上手。 很多已经做案例的人&#xff0c;却不知道如何去学习更加高深的知识。 那么针对这三类人&…

图像质量评价

转自&#xff1a;https://blog.csdn.net/moxibingdao/article/details/107096783 本文继 去雨去雾去模糊篇 、 图像增强与图像恢复篇 、图像修复Inpainting篇之后&#xff0c;继续盘点CVPR 2020 中底层图像处理技术中非常重要的一块&#xff1a;图像质量评价&#xff08;Image…

关于手机

一直以来都想把自己的手机更换升级&#xff0c;但由于种种原因现在仍在徘徊中。徘徊在买与不买之间&#xff0c;徘徊在还NOKIA&#xff08;5700/N73&#xff09;和SAMSUNG&#xff08;D908/U608&#xff09;之间&#xff0c;心情很复杂&#xff0c;考虑的问题太多反而更加麻烦。…

视频质量评价基础与实践

点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 编者按&#xff1a;视频质量评价作为近些年学6领域比较热门的基础研究&#xff0c;已经逐渐在各种业务场景上落地。本次公开课我们邀请到了SSIMWAVE联合创始人与首席研究员&a…

鸿蒙系统隐私空间有提示吗,如何评价有人把华为手机的隐私空间功能,被冠上渣男救星手机...

如何评价有人把华为手机的「隐私空间」功能&#xff0c;被网传为「渣男救星」&#xff1f; 当作我觉得挺好的呀&#xff0c;一个手机当作两个手机一样&#xff0c;当进入另外一个系统这个系统就像与世隔绝一样&#xff0c;完全收不到任何消息了。隐私空间就是这么神奇&#xff…

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

1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息。使用 requests 抓取手机评论 API 信息&#xff0c;然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 JSON 对象&#xff0c;并提取其中感兴趣的信息。读者可以点击此处打开 京东商城&#xf…

如何评价红米 Note 11T系列手机?网友:没有不足

5月24日&#xff0c;Redmi品牌发布Redmi Note 11T Pro、Redmi Note 11T Pro两款新机&#xff0c;以此宣告向安卓中端机市场发起了“突破天花板”的新攻势。 一、1699起&#xff01;高性价比红米Note11T系列备受好评 红米Note系列&#xff0c;一直都是Redmi主打中端消费市场的王…