网络爬虫—APP数据抓取详讲
- Fiddler
- 工作原理
- 安装完成Fiddler后的配置
- 前提条件
- 工具配置
- 手机数据抓取
- Fiddler手机端配置
- 手机端操作
- 实战演示
- 后记
前言:
🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主
📝📝第一篇文章《1.认识网络爬虫》获得全站热榜第一,python领域热榜第一
。
🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》全站热榜第八
。
🧾 🧾第八篇文章《8.网络爬虫—正则表达式RE实战》全站热榜第十二
。
🧾 🧾第十篇文章《10.网络爬虫—MongoDB详讲与实战》全站热榜第八领域热榜第二
🧾 🧾第十三篇文章《13.网络爬虫—多进程详讲(实战演示)》全站热榜第十二
。
🧾 🧾第十四篇文章《14.网络爬虫—selenium详讲》测试领域热榜第二十
。
🧾 🧾第十六篇文章《16.网络爬虫—字体反爬(实战演示)》全站热榜第二十五
。
🧾 🧾第十九篇文章《19.网络爬虫—照片管道》全站综合热榜第十二。
🧾 🧾第二十篇文章《20.网络爬虫—Scrapy-Redis分布式爬虫》全站综合热榜第二十五名,大数据领域第六名
。
🎁🎁《Python网络爬虫》专栏累计发表二十一篇文章,上榜九篇。欢迎免费订阅!欢迎大家一起学习,一起成长!!
💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。
🎁🎁:文章末尾扫描二维码可以加入粉丝交流群。
Fiddler
🧾 🧾Fiddler是一款免费的Web调试代理工具,也是目前最常用的“HTTP”抓包工具之一,它可以截取HTTP/HTTPS流量并且允许你查看、分析和修改这个流量。Fiddler在Web开发和测试中非常有用,因为它可以帮助你检查Web应用程序的性能、调试网络问题和安全漏洞。它还提供了一个可扩展的架构,使得它可以通过插件支持其他功能。Fiddler可用于Windows 、macOS 和Linux等多种操作系统。
安装包提取链接,免费分享给大家:
🎁🎁链接:https://pan.baidu.com/s/1AG7AerCCf0-wzEg8IrYvQQ?pwd=r1js 提取码:r1js
工作原理
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888.
当Fiddler会自动设置代(退出的时候它会自动注销代理),这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动Fiddler.
通过链接下载后,是一个压缩包
🎯对压缩包进行解压之后,一个是安装流程,一个是exe文件,直接点击exe文件就可以了
🎯打开后的页面是这样的
安装完成Fiddler后的配置
前提条件
🎯在使用Fiddler抓取数据包的时候,需要满足以下前提条件是:
(1)在自己的电脑上安装Fiddler的工具。
(2)电脑连接的网络需要和手机连接同一个网络 否则Andriod不能把HTTP发送到Fiddler的上。
工具配置
🎯 解密HTTPS流量
首先打开Fiddler==》选择“Tools”菜单下的“Options”功能==》点击“HTTPS”。选中"Decrpt HTTPS traffic"
配置完成后可以对网页数据进行抓包
手机数据抓取
Fiddler手机端配置
🧾 🧾fiddler监听端口默认是 8888,你可以把它设置成任何你想要的端口。
Fiddler==》选择“Tools”菜单下的“Options”功能==》Connections
勾选上 “Allowremote computersto connect” ,允许远程设备连接。其中为了减少干扰,可以去掉 “Act assystem proxy on startup” 。port为代理端口号8888
保持和我一样:
🎯首先查看自己电脑的IP地址,确保手机和电脑在同一个局域网内
🧾 🧾win+r 然后输入cmd,打开命令窗口,然后输入ipconfig命令查看ip
手机端操作
🧾 🧾1打开 WiFi 设置页面,选择要连接的 wifi(这里连接的一定要和自己电脑上面的Wifi是同一个Wifi) ,并选择“修改网络”。
在接下来弹出的对话框中,勾选“显示高级选项”。在接下来显示的页面中,点击“代理”,选择“手动。
代理服务器主机名设为 PC 的 IP ,代理服务器端口设为 Fiddler 上配置的端口 8888,点“保存”。至此所有的配置已经基本完成。
2 将 Fiddler 代理服务器的证书导到手机上才能抓这些 APP 的包。导入的过程:打开浏览器,在地址栏中输入代理服务器的 IP 和端口(即电脑的IP加fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装就好了。
在手机浏览器输入电脑ip加端口 例如 192.168.0.156:8888
输入后会进入到网页中并且跳出是否认证,如果不能打开可以重启fiddler
进入网页后选择You can download the FiddlerRoot certificate进行代理证数安装
下载完成后进行安装,点击证书进行证书安装,可以备注证书的名称,Android手机这样一般就可以用了。
iPhone的话还要授权一下,在你手机的 设置–>通用–>关于本机–>证书信任设置–>把刚刚下载的证书打上勾
Fiddler数据参数
Result : 请求的 HTTP(s) 状态吗
Protocol : 请求协议
HOST : 请求的主机名
URL : 请求的资源目录位置
Body : 请求大小
Caching : 请求的缓存
Content-Type : 服务器响应的实体类型
Process : 是谁(进程)发送的
Comments : 备注
Custom : 自定义
实战演示
本次实战以懂车帝为例
🧾 🧾目的是获取头条数据的评论全部获取保存到csv文件,数据要求用户名称 id 评论内容
🎯手机证书安装成功后,接下来重新打开Fiddler。
在打开手机app之前,我们先清楚数据:
🎯接下来打开手机懂车帝app,随机选择一条头条新闻,然后打开。
我们在fiddler中,看到很多抓包的数据:
🎯我们想要的数据就在里面,我们应该怎么找到数据呢,我们可以观察头条新闻中的主要信息,然后摘取部分来进行搜索:
🎯对查找到的数据进行查看;
🎯我们找到了数据在什么地方,接下来我们需要通过链接将数据获取到本地,方便我们对数据进行解析和提取.
🎯下一步是通过代码将数据获取到本地,并进行解析:
我们得到的url:
url = 'https://api5-normal-lq.dcarapi.com/motor/proxy/comment_list/article/v3/tab_comments/?offset=0&group_id=7223243569958879803&item_id=7223243569958879803&tab_index=0&top_comment_id=0&count=200&aggr_type=1&msg_id=0&device_platform=android&os=android&ssmix=a&_rticket=1683296556004&cdid=24882b7f-2668-4e23-ab20-c9363fb37926&channel=car_xiaomi_64&aid=36&app_name=automobile&version_code=754&version_name=7.5.4&manifest_version_code=754&update_version_code=7543&ab_client=a1%2Cc2%2Ce1%2Cf2%2Cg2%2Cf7&ab_group=3167591%2C3577237&resolution=1080*2250&dpi=440&device_type=M2102J2SC&device_brand=Xiaomi&language=zh&os_api=33&os_version=13&ac=wifi&iid=2307210525559904&device_id=3879510221522280&city_name=%E6%8A%9A%E5%B7%9E&gps_city_name=%E6%8A%9A%E5%B7%9E&selected_city_name&district_name=%E5%8D%97%E4%B8%B0&gps_district_name=%E5%8D%97%E4%B8%B0&rom_version=miui_v140_v14.0.4.0.tgacnxm&longi_lati_type=0&longi_lati_time=0&isTTWebview=1&content_sort_mode=0&total_memory=7.43&cpu_name=Qualcomm+Technologies%2C+Inc+SM8250&overall_score=8.776&cpu_score=8.8777&host_abi=arm64-v8a'
🎯现在又回到了之前我们学过的步骤,知道了url,那我们就可以来获取数据了.
通过代码,我们将数据获取到本地;
🎯接下来对数据进行解析,拿到我们需要的数据:
import requests
import csv
headers = {'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 13; M2102J2SC Build/TKQ1.220829.002) automobile/7.5.4 cronet/TTNetVersion:d5a7acd8 2022-07-15 QuicVersion:b314d107 2021-11-24'
}head = ['id','昵称','内容']# f = open('懂车帝APP评论.csv', 'w+', encoding='utf-8', newline='')
# csv_file = csv.writer(f)
# csv_file.writerow(head)url = 'https://api5-normal-lq.dcarapi.com/motor/proxy/comment_list/article/v3/tab_comments/?offset=0&group_id=7223243569958879803&item_id=7223243569958879803&tab_index=0&top_comment_id=0&count=200&aggr_type=1&msg_id=0&device_platform=android&os=android&ssmix=a&_rticket=1683296556004&cdid=24882b7f-2668-4e23-ab20-c9363fb37926&channel=car_xiaomi_64&aid=36&app_name=automobile&version_code=754&version_name=7.5.4&manifest_version_code=754&update_version_code=7543&ab_client=a1%2Cc2%2Ce1%2Cf2%2Cg2%2Cf7&ab_group=3167591%2C3577237&resolution=1080*2250&dpi=440&device_type=M2102J2SC&device_brand=Xiaomi&language=zh&os_api=33&os_version=13&ac=wifi&iid=2307210525559904&device_id=3879510221522280&city_name=%E6%8A%9A%E5%B7%9E&gps_city_name=%E6%8A%9A%E5%B7%9E&selected_city_name&district_name=%E5%8D%97%E4%B8%B0&gps_district_name=%E5%8D%97%E4%B8%B0&rom_version=miui_v140_v14.0.4.0.tgacnxm&longi_lati_type=0&longi_lati_time=0&isTTWebview=1&content_sort_mode=0&total_memory=7.43&cpu_name=Qualcomm+Technologies%2C+Inc+SM8250&overall_score=8.776&cpu_score=8.8777&host_abi=arm64-v8a'
html = requests.get(url, headers=headers).json()
num = html['total_number']
dic_list = []
for j in html['data']:txt = j['comment']['text']name = j['comment']['user_name']id = j['comment']['id_str']dic_list.append([id,name,txt])
# for data in dic_list:
# csv_file.writerow(data)print(dic_list)
# print(html)# f.close()
🎯运行结果如下:
🎯接着我们将数据写入csv文件中:
import requests
import csv
headers = {'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 13; M2102J2SC Build/TKQ1.220829.002) automobile/7.5.4 cronet/TTNetVersion:d5a7acd8 2022-07-15 QuicVersion:b314d107 2021-11-24'
}head = ['id','昵称','内容']f = open('懂车帝APP评论.csv', 'w+', encoding='utf-8', newline='')
csv_file = csv.writer(f)
csv_file.writerow(head)url = 'https://api5-normal-lq.dcarapi.com/motor/proxy/comment_list/article/v3/tab_comments/?offset=0&group_id=7223243569958879803&item_id=7223243569958879803&tab_index=0&top_comment_id=0&count=200&aggr_type=1&msg_id=0&device_platform=android&os=android&ssmix=a&_rticket=1683296556004&cdid=24882b7f-2668-4e23-ab20-c9363fb37926&channel=car_xiaomi_64&aid=36&app_name=automobile&version_code=754&version_name=7.5.4&manifest_version_code=754&update_version_code=7543&ab_client=a1%2Cc2%2Ce1%2Cf2%2Cg2%2Cf7&ab_group=3167591%2C3577237&resolution=1080*2250&dpi=440&device_type=M2102J2SC&device_brand=Xiaomi&language=zh&os_api=33&os_version=13&ac=wifi&iid=2307210525559904&device_id=3879510221522280&city_name=%E6%8A%9A%E5%B7%9E&gps_city_name=%E6%8A%9A%E5%B7%9E&selected_city_name&district_name=%E5%8D%97%E4%B8%B0&gps_district_name=%E5%8D%97%E4%B8%B0&rom_version=miui_v140_v14.0.4.0.tgacnxm&longi_lati_type=0&longi_lati_time=0&isTTWebview=1&content_sort_mode=0&total_memory=7.43&cpu_name=Qualcomm+Technologies%2C+Inc+SM8250&overall_score=8.776&cpu_score=8.8777&host_abi=arm64-v8a'
html = requests.get(url, headers=headers).json()
num = html['total_number']
dic_list = []
for j in html['data']:txt = j['comment']['text']name = j['comment']['user_name']id = j['comment']['id_str']dic_list.append([id,name,txt])
for data in dic_list:csv_file.writerow(data)print(dic_list)
# print(html)f.close()
本次实战演示到此就结束了,感谢你的阅读。
后记
本专栏文章到此已经结束,本专栏文章共计22篇,详细讲解爬虫入门到实战,感谢各位的阅读和支持。天行健,君子以自强不息;地势坤,君子以厚德载物。让我们一起努力奋斗下去!!!