Tag: scraping

如何获得响应状态404在casper.js然后打开,而不是未定义?

任何想法为什么下面的代码不会在response var或http.status.404事件中捕获404? 我用phantomjs 1.9,casperjs 1.0.2和Windows 7运行这个 var casper = require("casper").create(), utils = require('utils'); casper.start(); casper.thenOpen('http://www.google.com/sadfafsdgfsd', function(response) { casper.capture('test.png'); utils.dump(response); }); casper.on('http.status.404', function(resource) { this.echo('wait, this url is 404: ' + resource.url); }); casper.run(function() { console.log('End'); casper.exit(); }); 理想情况下,我喜欢在thenOpen()中捕获404。 怎么做? 更新1: 我试过这个 casper.thenOpen('http://www.google.com/sadfafsdgfsd', function(response) { casper.capture('test.png'); utils.dump(response); if(this.status(false)['currentHTTPStatus'] === 404) { console.log('Error 404'); } else { […]

有没有办法将对象传递给casper.js'evaluate()?

我看到这个线程,看起来像没有办法传递复杂的对象来evaluate() https://groups.google.com/forum/#!topic/casperjs/x7I8LDFwFJ0 所以,如果我写一个对象,并希望分享不同的evaluate() ,我该怎么做? 让我们来说一些这样的愚蠢的对象,我想一次又一次地使用getData函数: var testObj = (function() { var a = 1; function test1(b) { return (a+b); } return { getData : function(arg) { return (test1(3) + arg); } } })(); 有没有可能的解决方法? 更新1: 我的意思是传递对象的function。 像下面一样,但不起作用(返回null ): var casper = require('casper').create(); casper.start('about:blank', function() { var TestObj = function() { var a = 1; function […]

Cheerio有可能把React网站(Instagram)刮掉吗?

我试图用Node.js / Cheerio来刮掉Instagram(使用React构build)。 debugging文档显示一个对象返回,但它看起来不像典型的响应。 我猜这与React有关。 有没有办法解决这个问题,并拉动渲染的DOMparsing与Cheerio? 还是我完全错过了一些东西? 提前致谢。

如何parsingDOM(REACT)

我正试图从网站上刮取数据。 该网站使用Facebook的React。 因此,我可以使用Jauntparsing的源代码与使用Chrome的检查器检查元素时看到的代码完全不同。 我对这一切知之甚less,但已经做了一些研究,我认为这与DOM而不是源代码有关。 我需要一种方式来获得这个DOM代码,因为原始代码中没有我想要的东西,但是我没有最开始的想法(甚至在这里读了许多答案)。 这是一个我想刮的页面的例子。 例如,要抓取描述我想要抓住标签之间的内容: <span class="light-font extended-card-description list-group-item">Example description….</span> 但是,正如你所看到的,这个元素只有在“ 检查元素 ”时才会出现,而不是当我查看页面的源时。 我在这里给你的天才们提出的问题是,我怎样才能抓住这个DOM代码,并开始抓取我真正想要的元素? 原谅我,如果我的术语是完全closures,但正如我所说这是一个全新的领域,我已经做了我可以研究。 提前非常感谢!

刮一个网页,并通过点击button导航

我想在服务器端执行以下操作: 1)刮网页 2)模拟该页面上的点击,然后导航到新页面。 3)刮新页面 4)模拟新页面上的一些button点击 5)通过json或其他方式将数据发送回客户端 我正在考虑与Node.js一起使用它。 但我很困惑,我应该使用哪个模块 a)僵尸 b)Node.io c)Phantomjs d)JSDOM e)还有其他的东西 我已经安装了节点io,但无法通过命令提示符运行它。 PS:我在Windows 2008服务器上工作

如何pipe理PhantomJS实例的“池”

我正在计划一个webservice供我自己使用内部使用一个参数,一个URL,并返回表示从该URL parsing的 DOM的HTML。 通过解决我的意思是,Web服务将首先获得该网页,然后使用PhantomJS'呈现'页面,然后返回所有的DHTML,AJAX调用等执行后产生的源。 然而,基于每个请求(我现在正在做的)启动幻影的方式太慢了。 我宁愿有一个PhantomJS实例池,总是有一个服务于我的web服务的最新调用。 以前有没有做过这方面的工作? 我宁愿将这个web服务基于其他人的工作,而不是从头开始为自己写一个池pipe理器/ http代理服务器。 更多的上下文 :我已经列出了目前为止我见过的两个类似的项目,以及为什么我避免了每个项目,结果导致这个关于pipe理一个PhantomJS实例池的问题。 jsdom – 从我看到它有很好的function来执行页面上的脚本,但它不会尝试复制浏览器的行为,所以如果我使用它作为一个通用的“DOMparsing器”最终会成为很多额外的编码来处理各种边界情况,事件调用等。我看到的第一个例子是手动调用我使用节点设置的testing应用程序的body标签的onload()函数。 这似乎是一个深刻的兔子洞的开始。 Selenium – 它只有很多更多的移动部件,因此设置一个池来pipe理长期浏览器实例将比使用PhantomJS更复杂。 我不需要它的任何macros录制/脚本的好处。 我只是想要一个web服务,就像获取网页和parsing它的DOM一样,就好像我正在用浏览器浏览这个URL(或者如果我可以让它忽略图像等甚至更快)。