【问题标题】:CasperJS, scrape content in the target page with javascript disableCasperJS,使用javascript禁用抓取目标页面中的内容
【发布时间】:2017-02-18 14:24:07
【问题描述】:

我想从我的网站页面中获取所有图像的属性“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 和抓取元素吗?

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

谢谢!

【问题讨论】:

  • 嗯,如果你禁用了 Javascript,而 Casper 在 Javascript 上运行……那么你就是在禁用 Casper。对?为什么还要禁用 Javascript?
  • 你的意思是你想使用你禁用的东西?
  • 我想使用 casperJS,但我想阻止网站使用的所有 'no-casperJS' javascript =)(如果可能的话)

标签: javascript web-scraping casperjs


【解决方案1】:

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

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();
  }
});

并保持 js 为 casper 启用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多