phantomjs有config loadImage,
但我想要更多,
如何控制phantomjs跳过下载某种资源,
如css等...
=====
好消息:好消息: 此功能已添加。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();
}
};
答案 0 :(得分:16)
更新,正常工作!
自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。
答案 1 :(得分:7)
所以最后你可以尝试这个http://github.com/eugenehp/node-crawler
否则你仍然可以使用PhantomJS尝试以下方法
简单的方法是加载页面 - >解析页面 - >排除不需要的资源 - >加载到PhatomJS。
另一种方法就是阻止防火墙中的主机。
您可以选择使用代理来阻止某些URL地址和查询。
另外一个,加载页面,然后删除不需要的资源,但我认为这不是正确的方法。
答案 2 :(得分:6)
使用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();
}
};
答案 3 :(得分:3)
现在没办法(phantomjs 1.7),它不支持。
但令人讨厌的解决方案是使用http代理,因此您可以筛选出一些您不需要的请求