抖音爬虫(基于自动化测试)

这是一篇比较粗糙的博客,大都是一些想法和整体解决方案的东西,适合于有基础的人看。

 

由于抖音这类的短视频网站被整改,抖音关闭了分享视频的网页接口。现在无法从网页端爬取短视频。

解决方法:手机模拟器 + 中间抓包工具 + 自动化控制脚本 + 下载脚本

 

相关依赖:

手机模拟器: Genymotion(这是火箭速度的模拟器,AndroidStd自带的模拟器不能安装相关的apk)

抓包工具 :mitmproxy (Windows下使用mitmdump 命令)

自动化控制服务器: Appium Desktop

 

1. 环境的安装和配置

在整体的工作中,由于本次相关依赖较多,所以环境的安装和配置,是非常重要的一环。

这里我列一下相关参考的博文,大家可以根据指导来配置相关的环境

    模拟器的配置: https://www.cnblogs.com/whycxb/p/6850454.html

    抓包工具的配置:直接用Python3的pip install mitmproxy即可 相关手机配置去搜一下,设置手机WIFI代理即可(和电脑在同一个局域网内)。

    Appium配置: https://www.cnblogs.com/fnng/p/4540731.html。

至此,相关的环境和依赖都已经安装和配置完成。

 

2. Genymotion服务器上,app安装

这个模拟器之所以优秀,就是因为他有一个Translation的压缩包,支持ARM ArchitectureCPU编译的apk在X86 的编译架构环境下安装。所以Geny可以安装类似抖音或者微信这样的app

创建一个api22的模拟器(我试了一个api26的,抖音起不来,不知道为什么)

把Trans.zip拖进去模拟器。完成之后重启模拟器

把抖音的apk拖进去,安装完成后会自动启动(我这里用的抖音版本是2.0.0,如果你想用其他版本,代码需要更改find_element_by_id()里面的Id。因为不同版本中,相同控件的Id编号不一样。)

 

3. 自动化控制脚本的开发

这里用python脚本,通过appium服务器来操作genymotion模拟器。

这里都是很简单的命令,不懂的可以百度一下。

从推荐页向下挨个滑动,每到一个新视频,就点击进入用户主页,之后再点击两次返回键(为了避免点进广告),回到推荐页,继续上面的操作。理论情况下,可以无限爬取用户的视频内容。

 

4. 下载脚本的开发

 

这里下载脚本很简单,就是通过mitmproxy 的flow获得url,然后在所有的url中做过滤,拿到想要的url。

 

 

5. 总结

在控制脚本运行的过程中,mitmdump已经抓到了相关的URL,下载脚本要做的就是根据相关URL来正则出用户ID,根据获取视频列表请求的URL来发包,并且解析获得视频的URL。之后将ID和对应的URL存入Redis中的HASH(注意这里存进去是STR),之后用一个脚本来取出来下载。

注意这些视频的URL都是有时效性的,所以需要边刷URL,边用脚本下载。

 

 

 

在工作中,本来是需要把以上在windows下开发的一套流程放在服务器上面实现一遍,因为最终要把任务放在服务器上来做,不过由于这个模拟器需要VT依赖,在服务器端无法完成。

所以退一步的方法就是,买一台很厉害的工作站,在公司本地挂10多个模拟器,同时跑吧。

一台模拟器一天如果顺利的话,会爬到1000个用户左右(每个用户20个视频)。产生50G数据。

 

源码和脚本

 

 

最后,要感谢一下https://blog.csdn.net/weixin_41710515?t=1这位博主,我这个解决方法也是受了你的启发。感谢你!

 

请尊重原创!!!!!!!!

如果你要转载,请以醒目的标识著名源地址。

你也不想自己用心做的东西被剽窃。

 

你可能感兴趣的:(爬虫)