zoukankan      html  css  js  c++  java
  • appium在爬虫中的应用--转

    ####

    首先声明一点,在爬任何数据的时候,一定不要先考虑用Appium,

    个人建议开始爬虫前正确的做法应该是:
    1.去百度和谷歌搜下这个网站有没有人分享出你要爬数据的API
    2.看看电脑网页有没有你要的数据,调查下好不好拿,不管好不好拿,也不要急着就开爬
    3.看看有没有电脑能打开的手机网站,一般格式为http://m.xxx.com或http://mobile.xxxx.com,有的话可以用F12检查抓下包,看下抓取难易程度
    4.看看有没有手机App,抓下App的包,看能不能抓到接口
    5.抓下公众号和小程序的包,看能不能抓到接口
    以上调查完成后,再去确定你要选择的爬取方式。
    为什么这么说呢,你有没有遇到过这种情况,拿着电脑网站就开爬,搞了好几天终于搞定了反爬和加密参数,
    突然发现手机或者小程序能抓到现成的接口?或者突然发现这个网站直接有公开的接口。
    然后你下次就会按我说的做了,哈哈哈。


    其次:
    Appium不是爬虫工具(封面图上写的有),而是爬虫辅助工具,大多数情况下需要和抓包工具配合完成爬虫!!!
    接下来说下Appium的优缺点。虽然有点啰嗦,但是真的有干货,都是些踩过的坑,还是希望大家能耐心看完,如果实在懒得看,就看加粗的黑字就行。
    先说缺点,缺点比较多:就是慢慢慢!!!!!

    哈哈哈,其实Appium也很冤,它是有本事点击的像光速一样快的,可是因为连的是硬件,硬件反应完它才能进行下一步操作,
    所以硬件性能越好,它越给力,反之,手机打开个抖音都卡半天,网速一秒10K,让它给你一分钟抓几百上千个视频?Appium也是委屈巴巴。
    什么?要拿它跟Request,Scrapy比速度?来来来,这个加密参数来手写下,这个反爬来搞定下,Appium根本不需要考虑加密的问题,
    反爬的话也相对简单,因为你是模拟人滑动,除非你访问太过异常,少部分软件可能会有些限制。
    说优点之前,先说说Appium爬虫的思路。


    我当初之所以选择用Appium,是因为那时候要爬抖音无水印视频,抓包后发现抖音的加密算法太难了,本事有限,暂时破解不了,网上一时也没找到现成的JS破解代码。
    我又比较懒,偶然发现一款抓包工具可以执行python脚本,所以就想到抓包,我只需要写几行代码,让Appium代替我滑动手机,甚至这一步可以跳过,
    我直接手动滑动,一边刷抖音的同时,让手机自己生成加密后的参数去请求服务器,让抓包工具去执行Python脚本,劫持服务器返回的视频资源就行了,
    这样省时省力,也不用把大把时间浪费在破解JS身上。
    虽然速度没有request和Scrapy相比,但是还好Appium支持同时控制多台手机,我当时模拟器三开,两天抓了将近50W抖音无水印视频。

    这也是利用Appium在爬大多数App的主要思路。

    那么以上就是Appium的第一个优点,可以尽量少写代码,避开那些头疼的加密参数。
    不仅是加密参数,如果你需要模拟注册,需要破解滑动验证码或者短信验证码,也是可以用Appium并借助第三方打码平台搞定的。
    其次因为你是模拟人点击,而且速度够慢,这时候缺点也变成了优点,那就是基本0反爬,大部分手机App基本没有反爬,当然不排除个别桑心病狂的例外,
    比如检测你访问频率,禁止你使用抓包工具,以及传输数据不走http协议等。
    准确定位元素位置,类似xpath,而不是点击横纵坐标,这样就算页面布局或者手机型号或者分辨率改变了,也能准确的点到相应元素。
    有些App界面上的信息是可以直接通过Appium的text()属性抓到的,比如微信钱包流水,以前抓过,不知道现在还能不能抓了。
    可以自己写一些小脚本,搞个签到,抢票,游戏外挂啊什么的(比如双11时候的11.11秒那个),如果你手头有大量闲置安卓手机,
    写个脚本,开个小工作室帮别人挂挂机刷刷金币,刷刷任务什么的,也是可以的,这都是后话了。

    总结一下


    以下情况,可以考虑使用Appium:
    你要爬的数据不是太多,你又懒得写代码
    参数加密太难搞定或者网站反爬太严格
    有些数据App特有
    每天定点注册,有短信加滑动验证码
    就是自己私底下想搞些节省人力的小脚本


    以下情况,请不要优先使用Appium:
    老大急着要数据
    爬取数据量巨大,除非你有大量闲置电脑或者手机
    必须追求稳定,因为模拟器和手机偶尔抽风也很正常。
    硬件性能不高,如果用安卓模拟器,必须要有显卡,否则模拟器不让你安装,即使安装上也卡成PPT,
    不过我后边会介绍如何将模拟器部署Docker,因为是无界面的,比较轻量级,对显卡也无硬性要求。

    以上都是我在使用Appium爬虫时的个人经验,仅代表个人观点。

    ####

  • 相关阅读:
    bzoj 3992: [SDOI2015]序列统计【原根+生成函数+NTT+快速幂】
    bzoj 3771: Triple【生成函数+FFT+容斥原理】
    poj 2891 Strange Way to Express Integers【扩展中国剩余定理】
    hdu 1573 X问题【扩展中国剩余定理】
    bzoj 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁【生成函数||dp】
    hdu 1521 排列组合【指数型生成函数】
    JavaScript数据类型的检测
    JavaScript数据类型
    原生JS模拟jQuery $
    String基础
  • 原文地址:https://www.cnblogs.com/andy0816/p/15424145.html
Copyright © 2011-2022 走看看