⼩红书数据采集教程,如何从0到1APP采集
android.adb import ADB
override c++
adb = ADB(serialno='OF9SBMY59D69756L')
# 原始 adb shell 命令为 adb shell input keyevent 26
adb.start_shell('input keyevent 26') # 唤醒屏幕
# 启动app app包名
adb.start_shell('am start -n com.xingin.xhs/.activity.SplashActivity')
# 获取app包名
aapt dump badging C:\Users\xx\Desktop\xiaohongshu.apk
# launchable-activity: name='com.xingin.xhs.activity.SplashActivity'
爬虫软件 app其他 API
踩的⼀些坑
五、Mitmproxy
mitmproxy是⼀个⽀持HTTP和HTTPS的抓包程序,类似Fiddler、Charles的功能,只不过它通过控制台的形式操作;使⽤ mitmproxy 最主要是使⽤它的⼀个组件 mitmdump ,它可以通过python脚本处理响应内容,类似于Fiddler的界⾯抓包,但是我们可以更加⽅便地拿到响应数据
mitmdump -s mitm.py  # ⼿机连接电脑ip:8080
# 拦截某个链接
quest.url.startswith(detail_url):
text = # 获取链接的响应
六、⼩红书
主要逻辑:
if poco(name="com.xingin.xhs:id/aon").exists()poco.wait_for_any(poco(name="com.xingin.xhs:id/al0")
)
1. 摘要】 ⼀、前⾔:⼩红书的爬⾍主要是从搜索⼊⼿,爬取某个关键词下的所有笔记,通过调研发现有有两个渠道,第⼀个是 App,第
⼆个⼩程序。先说⼩程序端,通过抓包发现,每篇⽂章对应着⼀个 auth-sign ,这个参数应该有⼩程序内部⽣成,⽆法获取到,有种思路就是可以通过按键精灵或者 Mitmproxy 获取到每篇笔记的 auth-sign ,然后就可以通过接⼝去爬,这中间还需要⼀个⾃动化...
2. ⼀、前⾔:
函数的概念讲解⼩红书的爬⾍主要是从搜索⼊⼿,爬取某个关键词下的所有笔记,通过调研发现有有两个渠道,第⼀个是 App,第⼆个⼩程序。先说⼩程序端,通过抓包发现,每篇⽂章对应着⼀个 auth-sign ,这个参数应该有⼩程序内部⽣成,⽆法获取到,有种思路就是可以通过按键精灵或者 Mitmproxy 获取到每篇笔记的 auth-sign ,然后就可以通过接⼝去爬,这中间还需要⼀个⾃动化控制⼿机⼯具;再来说 App 端,需要有好⼏个加密参数 sign\token\shield,之前git上⾯还有⼤神维护着⼀个服务器可以破解签名,现在已经失效了,App 逆向暂时还没学(已提上⽇程),所以还是⽤⼿机端的⾃动化测试⼯具来爬,主要软件有Appium和Airtest,Appium 坑⽐较⼤,不仅安装⿇烦⽽且调试时极不⽅便,再者获取不到⼩红书笔记的详情页的页⾯结构,本⽂主要讲下使⽤ Airtest + Mitmproxy 进⾏⼿机端的爬⾍,这
两者加起来,可以解决90%的 App 爬⾍吧,除了淘宝...但可以⽤Pypeteer。
⼆、Airtest
三、使⽤Airtest⾃动化控制App
前期的使⽤可以在Airtest⾃带的IDE中调试,毕竟边操作边看到界⾯是⾮常⽅便地,等成熟之后搬到pycharm中执⾏再考虑作定时任务
四、Airtest基本[Api]使⽤:
系统功能结构图3. 获取元素:
1. ls = poco(name="com.xingin.xhs:id/aj8") 通过name获取
2. ls = poco(_text()) 通过text
3. poco("android.widget.LinearLayout").offspring("com.xingin.xhs:id/ak6") 通过⽬录树
4. 点击元素: x.click()
5. 获取⽂本: x.get_text()
6. 滑动屏幕: swipe([0.5, 0.8], [0.5, 0.7]) 从⼀个点到另⼀个点
7. 是否存在: x.exist()
8. 安卓ADB操作:
9. 官⽅的问题⽰例 能解决⼤部分问题 [[点我]](
10. Airtest与pycharm中执⾏脚本互斥 不能同时开
11. 点击时可能会有两种BUG出现,第⼀是点击⽆反应,只能作容错处理;第⼆是点击内容在屏幕之外,这时需要上滑屏幕,然后再做点
reactor线程模型的特点12. 安装 -> 点我
13. 使⽤:
14. 需注意每个链接都会经过这个⽅法
5. 进⼊App:
1. 唤醒屏幕 adb.start_shell('input keyevent 26')
2. 解锁
3. 启动APP adb.start_shell('am start -n com.xingin.xhs/.activity.SplashActivity')
16. 启动mitmproxy mitmdump -s mitm.py
7. 模拟操作:
1. 获取当前界⾯列表页的所有商品,点击进⼊,mitm会捕获⽬标链接,在mitm.py处理数据
2. 点击返回有三种⽅法:
1. 通过页⾯返回按钮,实测按钮会点击⽆反应;
2. 通过Airtest的touch图像识别⽅法,需将图⽚放⼊同⼀路径下;
3. 点击⼿机返回键,推荐! adb.start_shell('input keyevent 4')
enum class用法
18. ⼊库
19. 退出程序,锁屏
20. 补充:代码不多,主要是模拟⼈操作,然后加上容错判断,⽐如

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。