使用CasperJS进行刮擦:页面似乎在没有启用javascript的情况下加载
Scraping with CasperJS: page seems to load without javascript enabled
我正试图从谷歌上抓取图书类型信息。
就像你在谷歌上进行计算/转换一样,结果会显示在搜索结果上方的框中。我可以很容易地在浏览器(控制台)中抓取这个框中的数据,但是当我在casper中尝试相同的代码时,内容框不会出现在代码中的任何位置。我可以在浏览器中复制这一点的唯一方法是关闭JS
我不知道为什么CasperJS和我自己的浏览器会显示不同的格式,但有没有办法让它们相同?这是我使用的当前代码,其中
链接=https://www.google.com/webhp?hl=en&tab=ww#safe=off&hl=en&output=搜索&sclient=psy ab&q=The+Love+Affairs+of+a+书目狂+书籍+流派&oq=The+Love+Affairs+of
casper.start();
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) ');
casper.thenOpen(links, function() {
casper.waitForSelector('.answer_predicate', function() {
this.echo(this.getHTML('.answer_predicate'));
});
});
casper.run();
}
运行以下程序:
var casper = require('casper').create({
pageSettings: {
loadImages: false,
loadPlugins: false,
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1588.0 Safari/537.36'
}
});
links = 'https://www.google.com/webhp?hl=en&tab=ww#safe=off&hl=en&output=search&sclient=psy-ab&q=The+Love+Affairs+of+a+Bibliomaniac+book+genre&oq=The+Love+Affairs+of+a+Bibliomaniac+book+genre'
casper.start();
casper.thenOpen(links, function() {
this.waitForSelector('.answer_predicate', function() {
this.echo(this.getHTML('.answer_predicate'));
this.echo(this.getElementInfo('.answer_predicate').text);
});
});
casper.run();
给我这个输出:
<span class="kno-a-v">Fiction</span>
Fiction
我的假设是,这里的问题与这里发布的问题相同。
@PAEz:试试这个脚本,它与hexd创建的脚本非常相似,但只使用了phantomjs(没有casperjs)。
顺便说一句,既然他先回答了,而我也在做类似的事情,我认为他是应该得到赏金的人。
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open('https://www.google.com/webhp?hl=en&tab=ww#bav=on.2,or.r_qf.&cad=b&fp=c210d6fe329544e7&hl=en&q=The+Love+Affairs+of+a+Bibliomaniac+book+genre&safe=off', function() {
window.setTimeout(function() {
var genre = page.evaluate(function() {
return document.getElementsByClassName('answer_predicate')[0].textContent;
});
console.log(genre);
}, 3000);
});
我使用的是phantomjs 1.9.1 btw.
相关文章:
- 在页面检查器中启用javascript调试器
- 如何在IE8中启用JavaScript文件API
- 启用JavaScript的过度滚动
- 有没有计划在CSS中启用JavaScript
- Webdriver:用于动态禁用/启用JavaScript弹出窗口的Firefox配置文件
- 在正在调整大小的窗口上启用javascript
- 选中复选框时启用Javascript输入类型,未选中复选框则禁用
- 启用javascript文件缓存
- Ruby on Rails屏幕抓取错误-“;您必须在浏览器中启用javascript才能使用此应用程序"
- 冻结屏幕带叠加(如果未启用 JavaScript)
- 在按下按钮时启用 JavaScript 插件
- 已启用 JavaScript 消息
- 如何仅在启用 javascript 时链接外部样式表
- 如何在UIWebview中启用JavaScript
- 为带有 XML 注释的类实例启用 Javascript 智能感知
- 如果未启用 JavaScript,则重定向
- 在 Web 视图中启用 Javascript
- 在图像单击时启用 Javascript 功能
- Android 关闭,如果 WebView 启用 JavaScript
- 如何使用 RubyMine 4.0 的“content_for”帮助程序启用 JavaScript Code 格式化程序