快捷搜索:  聪少  引流   微商

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

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

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

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

  相关依赖:

  手机模拟器:?Genymotion(这是火箭速度的模拟器,千万别用AndroidStd自带的,慢的怀疑人生)

  抓包工具 :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模拟器。

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

  整体的思想就是说,从推荐页向下挨个滑动,每到一个新视频,就点击进入用户主页,然后点击用户的视频,向下滑动n次,在滑动视频的时候,mitmproxy就会抓到视频的地址,后面的下载脚本就会完成相关的下载工作。之后再点击两次返回键,回到推荐页,继续上面的操作。理论情况下,可以无限爬取用户的视频内容。

  4. 下载脚本的开发

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

  这里面写了一点点逻辑,就是判断什么时候进入主页,这时候创建下载路径;之后如果是视频地址,就下载在当前下载路径之下。

  还有就是用redis做了一步用户id去重,避免爬到重复用户。

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

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

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

  源码和脚本

  如果大家喜欢这篇文章的话,希望大家能够收藏,转发 谢谢!更多相关资讯可以关注西安华美校区,免费获得java零基础教程!额外附送excel教程!

相关文章