使用Selenium作爬虫小记

  以往,写爬虫的思路通常是用curl,urllib(python)或,HttpComponents(java)等发起request,而后读取response,用xpath,或者类js操做dom的方式获取须要的数据。html

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

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

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

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

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

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

 

附,此方法适用于那种 对request的时间要求及频度不过高的状况。或者说 request相对来讲不会成为瓶颈的状况。好比用此方法捕获xx视频网站的真实地址xxx.flv xxx.mp4 ,此时下载视频的耗时一定远远大于用selenium获取视频地址的时间。此时至关适合啊。。浏览器

相关文章
相关标签/搜索