22.网络爬虫—APP数据抓取详讲

news2024/11/17 13:38:37

网络爬虫—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篇,详细讲解爬虫入门到实战,感谢各位的阅读和支持。天行健,君子以自强不息;地势坤,君子以厚德载物。让我们一起努力奋斗下去!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/497020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+mybatis搭建maven多模块工程

最近看了一篇博客,选定springbootmybatis作为框架,在idea中搭建maven的多模块工程,下面也再温习一下,并将搭建过程分享出来,供小伙伴们参考。 1、开发工具及系统环境 Idea 2020.3系统环境为win10mysql5.7springboot2.…

GNN学习/GCN学习/GNN环境配置cuda安装/GCN代码展示

参考: A Gentle Introduction to Graph Neural Networks https://distill.pub/2021/gnn-intro/Understanding Convolutions on Graphs https://distill.pub/2021/understanding-gnns/Graph neural networks: A review of methods and applications https://arxiv.org/pdf/1812…

【Java】认识异常

目录 1.异常概念和分类 2.异常的抛出 3.异常的捕获 3.1异常声明throws 3.2异常捕获try-catch 3.3finally 3.4.异常的处理流程 4.自定义异常类 1.异常概念和分类 public class Test {public static void test() {test();}public static void main(String[] args) {Sy…

详解数据集safety-pilot-model-deployment-data

safety-pilot-model-deployment-data这个数据集是由美国交通部的联邦航空管理局(FAA)和交通运输部(DOT)主导的“安全试点”(Safety Pilot Model Deployment)项目所提供的。该项目旨在研究汽车与飞机之间的通…

Vue电商项目--开发Search模块与mockjs模拟数据

Search模块中商品分类与过度动画 现在完成了在/home路由下实现三级导航组件的显示隐藏 通过this.$route.path!/home在搜索页面显示,通过方法鼠标移入移出从而又控制在search路由下的显示隐藏 过渡动画:前提组件|元素必要又v-if| v-show指令才可以进行…

Linux进程状态及优先级

本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 进程状态及优先级 前言正文进程状态就绪运行状态R阻塞睡眠状态 S休眠状态D挂起 暂停状态T前台与后台进程待追踪暂停状态t 死亡状态 X僵尸状态 Z 孤儿进程进程优先级查…

nginx(七十三)nginx与Location响应头细节探讨

一 nginx与Location响应头细节探讨 ① 重定向和Location回顾 多种重定向跳转方式的差异 nginx之absolute_redirect、server_name_in_redirect、port_in_redirect 共同控制Location响应头 ② STS响应头导致307重定向 "第一次访问 http://www.baidu.com" 观察…

基于Qt、C++的毕业设计课设数学绘图工具(平面图、图表、立体图绘制-附下载链接)

基于Qt、C的毕业设计课设数学绘图工具(平面图、图表、立体图绘制) 介绍 这是我的毕业设计,基于Qt Creator 4.11.1,c语言。 效果图如下 点我下载项目源码(含打包软件) 使用说明 1. 二维函数绘制 开始界面…

python 系列 07 - 基于easyocr的ocr识别

OCR,光学文字识别,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。本示例通过easyocr库来演示。easyocr是一个比较流行的库,支持超过80种语言。安装的时候注意会附带安装torch库(一个深度学…

将ROS1和ROS2安装到同一个ubuntu系统中,ROS2安装??????????????

1. 本文测试环境: ubuntu:20.04,虚拟机 ROS1:noetic ROS2:foxy 2. 先说结论 ROS1 与 ROS2 共存,需要考虑三个问题: 1) 不同Ubuntu版本,有不同版本的ROS1和ROS2推荐,尽量不要任性地乱装; 2)ROS1和ROS2安装过程中,是否会出现文件“删改”的问题?目前使用下来,并…

拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)

前置知识 有向无环图 在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 如图所示。 入度 对于一个有向图,若x点指向y点,则称x点为y点的入度。 出度…

Redis --- 多级缓存

一、什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时&#xff…

python每日一练:硬币划分(多方法详解)

文章目录 前言0、题目一、暴力总是不能解决问题的二、还能更暴力一点三、减少暴力思想四、引入先进思想总结 前言 这题挺有意思的,典型的背包组合问题,虽然没有要求各种组合方式,不过我们可以试试给出组合方式。当然这题不太可能用一行代码解…

STM32 从入门到精通系列讲解 - 总目录

👦 作者介绍:Bazinga bingo,专注C语言应用硬核干货分享,潜心修炼,虚心学习,立志做嵌入式相关赛道的Top。 📕 本文收录于《STM32开发》专栏,包含STM32内部模块介绍、片内资源开发、不…

如何使用bingChat(使用方法+遇到的问题+感受)

文章目录 前言一、如何使用Bing Chat1. 下载new Bing2.重新注册一个microsoft(此步骤可略过,如有问题再操作此步骤)3. 使用 Bing Chat 二、常见问题1.Chat mode is only available when you have access to the new Bing.2. 网页上没有“聊天…

leetcode 104——二叉树的最大深度

文章目录 题目详情方法一 万能的递归方法二 通过使用层序遍历的方式Java完整代码递归实现非递归实现——借助队列 题目详情 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 l…

yolov5图像识别voc转yolo代码解析

https://github.com/ultralytics/JSON2YOLO https://blog.csdn.net/qq_51831335/article/details/127237772 目标检测数据集标签转换COCO2VOC、YOLO2VOC、JSON2YOLO <annotation><folder>VOC2007</folder><filename>000001.jpg</filename><s…

x265码控分析

D和R的关系 高分辨率量化 均匀量化&#xff1a;量化区间 ‘ Δ k y k − y k − 1 ‘ \Delta_ky_k-y_{k-1} ‘Δk​yk​−yk−1​‘&#xff0c;近似为常数&#xff1b;p(x)为信源概率密度函数&#xff0c;且 ‘ Δ k ‘ \Delta_k ‘Δk​‘的大小相对于p(x)的变化率充分小&…

【模拟IC学习笔记】 反馈

反馈的作用&#xff1a;增益灵敏度降低 采用开环的方式实现一个精确的增益比较困难&#xff0c;但是可以实现高增益。 增益灵敏度衍生出来的另外两个特点 1、增加系统带宽。 2、改变输出阻抗&#xff0c;提高驱动能力。 反馈的作用&#xff1a;增加带宽 带宽的增加来源于…

对传递函数的零极点、频率响应、稳定性的理解

对传递函数的零极点、频率响应、稳定性的理解 零极点 从传递函数求零极点 令传递函数分子为0求出零点&#xff0c;令分母为0求出零点。 频率响应 单极点系统的频率响应 A v A v d c ∗ ( 1 / ( 1 s R C ) ) AvAv_dc*(1/(1sRC)) AvAvd​c∗(1/(1sRC))&#xff0c;系统的极…