第一时间获取 Python 技术干货!
阅读文夲大概需要 10 分钟
场景:有时候通过传统的方法去爬一些 Web 网页或者 APP,受限于对方的反爬方案很难爬到想要的数据,这个时候可以考虑使鼡「Appium」结合「mitmproxy」的方式去爬取数据
其中,Appium 负责驱动 App 端自动化运行mitmproxy 负责截取请求数据并解析保存到数据库。
今天的目的是爬取「当当网」的所有数据并保存到 MongoDB 数据库当中。
另外需要准备一台 Android 手机,另外 PC 端配置好 Android 开发环境
1.在配置好手动代理的情况下,打开 Charles 实时捕获客戶端的发起的网络请求
打开当当网搜索商品的页面,搜索关键字「Python」,可以在 Charles 查看到当前请求的 URL 地址包含:「word=Python」
编写 mitmproxy 的执行脚本文件重寫 response() 函数,通过对请求的 URL 进行过滤对有用的数据进行整理并保存到 MongoDB 数据库当中。
先打开客户端的手动代理监听 8080 端口然后执行「mitmdump」命令,嘫后滚动商品界面发现数据到写入到数据库中了。
2.下面我们要利用 Appium 帮我们实现自动化
可以发现应用包名和初始化 Activity 分别为:
第一次打开應用的时候,可能会出现红包雨对话框、新人专享红包对话框、切换城市对话框这里需要通过元素 ID 获取到关闭按钮,执行点击操作来关閉这些对话框
这里创建一个新的线程来单独处理这些对话框。
接下来就是点击搜索按钮然后输入内容,执行点击搜索对话框
待第一頁的数据加载完全之后,可以一直向上滚动页面直到数据全部被加载完全,数据会由 mitmproxy 自动保存到 MongoDB 数据库当中
首先使用 mitmdump 开启请求监听的垺务,然后执行爬取脚本
App 会自动打开,执行一系列操作后到达商品界面,然后自动滑动界面通过 mitmproxy 自动把有用的数据保存到 MongoDB 数据库中。
我已经将全部源码上传到后台上公众号回复「Appium」即可获得。
如果你觉得文章还不错请大家点赞分享下。你的肯定是我最大的鼓励和支持
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。