相关推荐recommended
22.网络爬虫—APP数据抓取详讲
作者:mmseoamin日期:2023-12-05

网络爬虫—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.

                  通过链接下载后,是一个压缩包

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第1张

                  🎯对压缩包进行解压之后,一个是安装流程,一个是exe文件,直接点击exe文件就可以了

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第2张

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第3张22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第4张

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第5张

                  🎯打开后的页面是这样的

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第6张

                  安装完成Fiddler后的配置
                  前提条件

                  🎯在使用Fiddler抓取数据包的时候,需要满足以下前提条件是

                  (1)在自己的电脑上安装Fiddler的工具。

                  (2)电脑连接的网络需要和手机连接同一个网络 否则Andriod不能把HTTP发送到Fiddler的上。

                  工具配置

                  🎯 解密HTTPS流量

                  首先打开Fiddler==》选择“Tools”菜单下的“Options”功能==》点击“HTTPS”。选中"Decrpt HTTPS traffic"
                  

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第7张

                  配置完成后可以对网页数据进行抓包

                  手机数据抓取

                  Fiddler手机端配置

                  🧾 🧾fiddler监听端口默认是 8888,你可以把它设置成任何你想要的端口。

                  Fiddler==》选择“Tools”菜单下的“Options”功能==》Connections

                  勾选上 “Allowremote computersto connect” ,允许远程设备连接。其中为了减少干扰,可以去掉 “Act assystem proxy on startup” 。port为代理端口号8888

                  保持和我一样:

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第8张

                  🎯首先查看自己电脑的IP地址,确保手机和电脑在同一个局域网内

                  🧾 🧾win+r 然后输入cmd,打开命令窗口,然后输入ipconfig命令查看ip

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第9张

                  手机端操作

                  🧾 🧾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之前,我们先清楚数据:

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第10张

                  🎯接下来打开手机懂车帝app,随机选择一条头条新闻,然后打开。

                  我们在fiddler中,看到很多抓包的数据:

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第11张

                  🎯我们想要的数据就在里面,我们应该怎么找到数据呢,我们可以观察头条新闻中的主要信息,然后摘取部分来进行搜索:

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第12张

                  🎯对查找到的数据进行查看;

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第13张

                  🎯我们找到了数据在什么地方,接下来我们需要通过链接将数据获取到本地,方便我们对数据进行解析和提取.

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第14张

                  🎯下一步是通过代码将数据获取到本地,并进行解析:

                  我们得到的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,那我们就可以来获取数据了.

                  通过代码,我们将数据获取到本地;

                  22.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第15张

                  🎯接下来对数据进行解析,拿到我们需要的数据:

                  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.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第16张

                  🎯接着我们将数据写入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.网络爬虫—APP数据抓取详讲,在这里插入图片描述,第17张

                  本次实战演示到此就结束了,感谢你的阅读

                  后记

                  本专栏文章到此已经结束,本专栏文章共计22篇,详细讲解爬虫入门到实战,感谢各位的阅读和支持。天行健,君子以自强不息;地势坤,君子以厚德载物。让我们一起努力奋斗下去!!!