我怎样才能控制PhantomJS跳过下载某种资源?

phantomjs已经configuration了loadImage,

但我想要更多,

我怎样才能控制phantomjs跳过下载某种资源,

如CSS等…

=====

好消息:这个function被添加了。

https://code.google.com/p/phantomjs/issues/detail?id=230

要旨:

page.onResourceRequested = function(requestData, request) { if ((/http:\/\/.+?\.css/gi).test(requestData['url']) || requestData['Content-Type'] == 'text/css') { console.log('The url of the request is matching. Aborting: ' + requestData['url']); request.abort(); } }; 

4 Solutions collect form web for “我怎样才能控制PhantomJS跳过下载某种资源?”

更新,工作!

自从PhantomJS 1.9以来,现有的答案是行不通的。 你必须使用这个代码:

 var webPage = require('webpage'); var page = webPage.create(); page.onResourceRequested = function(requestData, networkRequest) { var match = requestData.url.match(/wordfamily.js/g); if (match != null) { console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData)); networkRequest.cancel(); // or .abort() } }; 

如果使用abort()而不是cancel(),则会触发onResourceError。

你可以看看PhantomJS文档

所以最后你可以试试这个http://github.com/eugenehp/node-crawler

否则你仍然可以用PhantomJS尝试下面的方法

简单的方法是加载页面 – >parsing页面 – >排除不需要的资源 – >将其加载到PhatomJS中。

另一种方法就是阻止防火墙中的主机。

或者,您可以使用代理来阻止某些URL地址并向其查询。

另外一个,加载页面,然后删除不需要的资源,但我认为它不是正确的方法在这里。

使用page.onResourceRequested ,例如loadurlwithoutcss.js :

 page.onResourceRequested = function(requestData, request) { if ((/http:\/\/.+?\.css/gi).test(requestData['url']) || requestData.headers['Content-Type'] == 'text/css') { console.log('The url of the request is matching. Aborting: ' + requestData['url']); request.abort(); } }; 

现在没有办法(phantomjs 1.7),它不支持。

但一个讨厌的解决scheme是使用一个HTTP代理,所以你可以筛选出一些你不需要的请求

  • 无头浏览器和刮 - 解决scheme
  • phantomjs:找不到命令
  • 在单个脚本中使用多个page.open
  • 如何使用PhantomJS提交表单
  • 如何使用Phantomjs向下滚动以加载dynamic内容
  • 使用PhantomJS设置远程debugging
  • 如何正确地停止phantomjs执行
  • 有没有可能使用Selenium WebDriver来驱动PhantomJS?
  • CasperJS将数据传回给PHP
  • 通过url来做同样的事情
  • Casperjs / PhantomJs对Selenium