CasperJS,使用javascript禁用目标页面中的废品内容

时间:2017-02-18 14:24:07

标签: javascript web-scraping casperjs

我想获取属性' src'的内容。来自我网站页面的所有图片。 我可以用这个简单的代码来做到这一点:

var x = require('casper').selectXPath;

var casper = require('casper').create({
        verbose: true,
        logLevel: "debug",
});

casper.start('http://mylocalwebsite.com', function() {
        var urls = casper.getElementsAttribute(x('//img'), 'src'); // "Google"
        console.log(urls); // urls are displayed in my shell
});

casper.run();

但是,我想在使用我的脚本时禁用javascript,我通过以下方式修改我的初始代码:

var x = require('casper').selectXPath;

var casper = require('casper').create({
        verbose: true,
        logLevel: "debug",
        pageSettings: {
          javascriptEnabled: false,
        },
});


casper.start('http://mylocalwebsite.com', function() {
        var urls = casper.getElementsAttribute(x('//img'), 'src'); // "Google"
        console.log(urls); // this log doesn't appears from my shell
});

casper.run();

(属性' javascriptEnabled'设置为false)

但是如果我这样做,我的脚本就会在getElementsAttribute行之后停止工作。

我理解这一点,当我禁用javascript时,我无法使用casperjs选择器。这样对吗 ?是不是可以在我的页面中禁用javascript和scrape元素?

有没有办法从我禁用javascript的脚本中获取所有图像的src内容属性?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过取消此类请求来阻止网站的所有j运行:

var casper = require('casper').create({
  verbose: true,
  logLevel: "debug",
});

casper.on('resource.requested', function(requestData, request){
  if (/\.js/.test(requestData.url)) {
    casper.log("skipped " + requestData.url);
    return request.cancel();
  }
});

并为casper启用js。

js文件的URL中可能没有.js后缀,如果不需要资源文件,您也可以取消所有资源请求。