High一下! --from coolshell

使用Selenium做爬虫小记

  以往,写爬虫的思路一般是用curl,urllib(python)或,HttpComponents(java)等发起request,然后读取response,用xpath,或者类js操作dom的方式获取需要的数据。

  然而当遇到那种将数据藏在js里面的情况,比如sina weibo中,好友信息都是放在script节点里,由js在client端动态append到页面上,如果要获取这种数据,那只有使用正则表达式了。

  直到我发现了个叫Selenium的自动化测试框架。可以通过程序启动,控制浏览器的行为。让我省去了写正则的时间。但缺点是框架非常重,效率很低。(毕竟他原本是用来做自动化测试的。。)

  然而最近有一个需求,需要截取浏览器上的ajax请求。因为ajax请求是js发起的。我有2种方法。

1,读前台js代码,根据需要自己拼出想要的请求。(这方法针对没有加密过的js,和简单的需求适用)

2,用selenium启动浏览器,(我这里用chrome),然后写chrome插件,(chrome 有个API可以对request进行过滤。https://developer.chrome.com/extensions/webRequest.html  )截获指定的request。然后将此url,append到前台页面。

3,用selenium获取插件append的节点。捕获请求。

 

附,此方法适用于那种 对request的时间要求及频度不太高的情况。或者说 request相对来说不会成为瓶颈的情况。比如用此方法捕获xx视频网站的真实地址xxx.flv xxx.mp4 ,此时下载视频的耗时必定远远大于用selenium获取视频地址的时间。此时相当适合啊。。

 

 

posted @ 2013-08-18 23:05  庄周梦蝶,黄粱一枕  阅读(1291)  评论(0编辑  收藏  举报