webMagic虽然方便,但是也有它不适用的地方,比如定向的某个单页面爬虫,或者存在大量ajax请求,页面的跳转请求全都混淆在js里。

这时可以用webMagic结合phantomjs来真实模拟页面请求,即不仅仅获取数据,而是将整个页面完整渲染出来。虽然这样会使爬虫速度变慢很多,但是不失为一种快捷方便的解决方法。

PhantomJS是一个基于 WebKit 的服务器端JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于页面自动化 , 网络监测, 网页截屏,以及 无界面测试 等。

淘宝就是这种难以用普通爬虫方法爬取的网站。直接发送GET请求到淘宝基本获取不到什么有效的内容和链接。

还好webMagic虽然默认使用httpClient获取网页,但是它也将它获取网页的方法Downloader开放出来。这样可以在Downloader里使用phantomjs获取页面。

phantomjs使用方法

1.下载安装phantomjs

2.编写js脚本

 

system = require('system')   //传递一些需要的参数给js文件  
  
address = system.args[1];//获得命令行第二个参数 ,也就是指定要加载的页面地址,接下来会用到    
  
var page = require('webpage').create();  
  
var url = address;  
  
  
page.open(url, function (status) {  
  
    if (status !== 'success') {  
  
        console.log('Unable to post!');  
    } else {  
  
        var encodings = ["euc-jp", "sjis", "utf8", "System"];//这一步是用来测试输出的编码格式,选择合适的编码格式很重要,不然你抓取下来的页面会乱码o(╯□╰)o,给出的几个编码格式是官网上的例子,根据具体需要自己去调整。  
  
        for (var i = 3; i < encodings.length; i++) {//我这里只要一种编码就OK啦  
  
            phantom.outputEncoding = encodings[i];  
  
            console.log(phantom.outputEncoding+page.content);//最后返回webkit加载之后的页面内容  
        }  
  
    }  
    phantom.exit();  
});     
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-26
  • 2021-06-20
  • 2021-07-11
  • 2022-03-04
  • 2022-02-09
猜你喜欢
  • 2021-10-30
  • 2022-12-23
  • 2021-04-15
  • 2021-11-14
相关资源
相似解决方案