python iphone 爬虫_Python爬虫实战之抓取京东苹果手机评价!
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. 示例代码 源码地址点这
根据前面的描述实现抓取苹果手机评论信息的爬虫,通过 fetch_comment_count 变量可以控制抓取的评论条数。最后将抓取的结果显示在控制台中。示例代码如下:
# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:4.抓取京东苹果手机评论.py
@time:2020/09/15
"""
import requests
import json
headers = {
'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. 注意事项京东商城如果频繁使用同一个 IP 发起大量请求,服务端会临时性封锁 IP,可以使用一些免费的代理。
API URL 返回的数据并不是标准的 JSON,里面还有一些杂质,需要在本地将其删除。 本例有一个前缀是 fetchJSON_comment98 ,这个前缀是通过 URL 的 callback 参数指定的,根据参数名应该是个回调函数,具体是什么不需要管,总之,需要按照 callback 参数的值将返回数据的前缀去掉。
这个爬虫是不是感觉很简单!你学会了吗?
此文转载于博主,著作权归作者所有,如有侵权联系小编删除!
python iphone 爬虫_Python爬虫实战之抓取京东苹果手机评价!相关推荐
- XHR如何爬虫_Python爬虫实战之抓取京东苹果手机评价
1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 ...
- 抓取京东苹果手机评价!苹果手机质量还是非常不错的!
1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 ...
- Python爬虫实战(二):抓取京东苹果手机评价
目录 1. 网站分析 2. 示例代码 3. 注意事项 1. 网站分析 本文实现的爬虫是抓取京东商城指定苹果手机的评论信息.使用 requests 抓取手机评论 API 信息,然后通过 json 模块的 ...
- python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇
前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...
- 爬虫基础篇之Scrapy抓取京东
虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...
- python爬取网店数据_Python爬虫实现抓取京东店铺信息及下载图片功能示例
本文实例讲述了Python爬虫实现抓取京东店铺信息及下载图片功能.分享给大家供大家参考,具体如下: 这个是抓取信息的 from bs4 import BeautifulSoup import requ ...
- go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...
- Python爬虫编程思想(70): 项目实战--抓取京东商城手机销售排行榜
本文的例子使用requests抓取京东商城手机销售排行榜,并使用pyquery和CSS选择器提取相关的信息,同时将这些信息保存到Excel文件中.本例抓取总排行榜,并单独提取Apple.华为和小米手机 ...
- python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕
原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...
最新文章
- 时间为什么用 12 进制?
- 还找不到想要的文章吗?公众号搜索方法大全
- VC里的集合类、链表类、映射类
- python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...
- ASP.NET Web API的Controller是如何被创建的?
- easyui中动态使datebox、combobox为只读状态
- 《Adobe After Effects CS5经典教程》——1.5 对合成图像作动画处理
- 使用IdleTest进行TDD单元测试驱动开发演练(3) 之 ASP.NET MVC
- BGP(3):BGP 的路径优选
- win10不用密码登录及不显示“要使用本计算机,用户必须输入用户名和密码”的解决办法
- Java之美[从蛮荒到撬动地球]之设计模式二
- Crust “方舟计划”播报# 3|Crust社区杰出贡献节点——20 位“开拓者”诞生
- 修改注册表为当前用户和默认用户添加日文输入法
- linux18.04 英文文件夹,在Ubuntu 18.04 LTS中打开文件夹的6种方法
- 燕大计算机研究生毕业待遇,研究生人均“月薪上万”是真是假,过来人坦言:想想就好,别认真...
- 2念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si
- Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Sparsity
- 面试题精选:循环队列
- CSS3实现实时时间数字滚动
- 原创wallpaper Engine冷高轮时间电脑动态时钟壁纸 动态小人人体形状造型数字 动态手势数字 动态麻将数字 动态扑克数字 动态时钟壁纸
热门文章
- 【渝粤题库】陕西师范大学210013综合艺术 作业(高起专)
- ICDE2020论文简析:空间众包实时交叉在线匹配 - Real Time Cross Online Matching in Spatial Crowdsourcing
- LOL提示,部分游戏玩家可能遇到无法进入游戏的问题,驱动人生8解决方案
- Spring4 整合 Hibernate3 基本使用(通过注入 SessionFactory)
- 又想起Solaris
- Vue使用PrintJS实现页面打印功能
- 如何使用WORD里的添加尾注写论文中的参考文献?
- 师傅离开后的这一个月
- Jupyterhub嵌入Superset之Jupyterhub配置
- 秋日园博园之三-北京魅力