数据抓取的艺术(三):抓取Google数据之心得

  • 时间:
  • 浏览:0

     [虚拟第六回合,我用原先新应用程序执行抓取,当什儿 应用程序遇到验证码时,保存、退出并回馈断点参数,否则 带入参数重启原先新的应用程序。时间意味着着,还没没有实现。]      第六回合,较长的抓取时间,我在傻傻停留,一另5个劲断点续抓一次。我受不了了,我但是但是刚开始 做点否则 的事情,比如浏览新闻、听听音乐、看看电影有哪些的。终于,我发现,竟然碰不到验证码页面了。这点十分惊喜,仔细研究了什儿 过程,我得出结论,抓取时否则 应用程序对抓取应用程序网速的影响,正好让Google认为这似乎但是人在搜索,什么都有有有从95个左右但是但是刚开始 ,到最后的15原先的共词搜索,还是那个应用程序,但否则 我的否则 休闲活动意味着着后半程一次都没有遇到验证码。Oh Yeah~神马重启原先新应用程序,NND前会 浮云,一边爬取数据一边轻松生活才是王道。(但是别因下片把网速全占满了,使你的抓取应用程序一另5个劲趋于稳定原先停留情況,就像《潜伏》最后一幕一样,翠平抱着孩子一另5个劲在停留原先永远不到归来的人)。什么都有有有要向普天下的男你要们歌词 歌词 大声说:并不没有直接,一上来就只知道抓,共同多看看电影、多听听歌,效果会更好!难道前会 么?

      最后,我站在高岗上,手握着Google的内裤,让它尽情随风舞动......
      这但是技术,这也是生活!

五岳之巅,于武汉桂子山

2013年5月16日,下午4点

   (1)时间      时间是原先与抓取规模相形而生的因素,数据规模越大,时间消耗往往越长。什么都有有有应用程序优化变得相当重要,要知道抓取时间越长,出错的否则 性就越大,这还不说应用程序时要人工干预的情境。一旦运行中时要人工干预,时间越长,干预次数没有多,出错的几率就更大了。在数据没有来过多,工期太短的情況下,使用多应用程序抓取,也是原先好辦法 ,但这会增加应用程序复杂度,对最终数据准确性产生一定影响。      什么都有有有,千万不到看不起小小的调优,那怕但是0.02秒一次的改进,对于上万乃至千万级别的数据量而言,都都还后能 节省数小时甚至数天的时间,共同都还后能 在有一种程度上降低出错的概率。于是,我得出原先原则:“应用程序优化要力求极致”。      这是“软”的因素。

   (2)速率       呵呵,速率都还后能 被视为是时间的另有一种说辞,确实 什儿 说法并不全面。在这里我所谓的速率,指的是I/O速率。一旦算法优化否则 完善,没有还有有哪些都还后能 提高速率以缩短应用程序完成的时间呢?这回抓取,我使用的是SSD硬盘,与实验室的机械硬盘相比(可惜用的是笔记本),速率得到了明显的提升。      我感觉事先解决大规模数据(或“大数据”),时要使用内存数据库。首先,使用数据库而非Excel就否则 都都还后能 提高速率,否则 再采用内存数据库语句,速率将得到更大幅度的攀升。当然,否则 你机器内存足够大语句,都还后能 试试Redis。      SSD硬盘与内存数据库是有点重要的原先方面。但你要们歌词 歌词 但是能忽略CPU,原先好的CPU但是一颗“强劲的心”,否则 笔记本的CPU一般都做过“调优”(想想吧:有限的电力,为了延时,只好玩儿的面一口“浅蓝色小丸药”),我确实 I3解决器性都还后能 则 低下,否则 前会 I5+还不如直接用奔腾双核底部形态。当然最好是运行在台式机、工作站、服务器甚至云系统中。嘿嘿,下次我就试试Sae。      这是“硬”的因素。   (3)了解你的对手      常言道,知己知彼百战不殆。做数据抓取,最重要的但是了解你的对手。什儿 轮,我很倒霉,我碰到了Google姐,否则 我的数据不到从Google上凝固,什么都有有有没的选择,不过虽说她也把我折腾地够呛,但最终我还是享受到了“神秘的”幸福。      这是“人”(目标对手)的因素。      八卦一下我和Google姐一夜大战的5个回合吧。      第一回合,简单地使用urllib2或其它库是不行的,我的血泪史说明,搜索超不过8个Google就强行和你抛下连接了。重新搜这几只还都还后能 ,但接着第8个往后走,她就又不干了,还是不到连接。姐姐一脸坏笑地看着我,就这点小把戏,还想过来扒我裤子?我十分汗颜,责怪另一方很难正确估计出她那雄壮的腰围。      第二回合,我但是但是刚开始 设计欺骗Google。否则 人类访问网站,过多有极短而均匀的点击行为,什么都有有有我设计了原先小函数,每次搜索完毕,随机暂停1~3秒,这是在模仿人的访问模式。不幸再次降临到我身上,姐姐的坏笑依旧,我也很难触动到她的第一根毫毛。      第三回合,我生气了。我准备上代理,我的战术很简单,弄一大堆代理站成一队,排得一眼望不到边,抛下连接我就换原先代理,再抛下就再换,吓死她!结果这条路仍没走通,什儿 硬碰硬的辦法 前会 好辦法 ,姐姐确实 是过来人,从小吓大的,这招没用:一方面是我找到的可用代理IP确实 有限,根本不足换的;另一方面,代理的引入大大增加了应用程序出错的否则 性,否则 代理原先就不都靠谱。兩个,前会 Google断掉的但是代理跑着跑着给断的。      第四回合,我没气可生了。我但是但是刚开始 深入研究,静下心来耐心学习什儿 领域的知识,仔细欣赏、研究Google什儿 熟女。功夫不负有心人,我找到了终极解决方案:浏览器。并不再模拟手工行为(Mechanize),咱就直接用浏览器访问,看她还有有哪些话说。确实 原先的辦法 什么都有有有,核心但是使用测试工具。什么都有有有你也都还后能 使用selenium或Windmill,也都还后能 使用QT+Webkit等等就不一一列举了。当然,我用的是Selenium+Phantomjs+BeautifulSoup,你要想想但是用BS,直接正则算了,但毕竟BS比较简单哈。      第五回合,我编写好应用程序,进行优化,特意选择夜半悄然但是但是刚开始 执行。我用的校园网,晚上网速极快,什么都有有有嗖嗖地抽取出结果,但有个间题,但是Google对单IP短时持续访问请求是有限制的,什儿 限制不论是蜘蛛还是人都绕不开,她会证