我想在服务器端执行以下操作:
1)刮网页
2)模拟该页面上的点击,然后导航到新页面。
3)刮新页面
4)模拟新页面上的一些按钮点击
5)通过json或某些东西将数据发送回客户端
我正在考虑用Node.js来使用它。
但是我觉得我应该使用哪个模块,我很困惑
a)僵尸
b)Node.io
c)Phantomjs
d)JSDOM
e)还有别的
我已经安装了节点io但是无法通过命令提示符运行它。
PS:我在Windows 2008服务器上工作
解决方法
Zombie.js和Node.io在JSDOM上运行,因此您的选择是使用JSDOM(或任何等效的包装器),无头浏览器(PhantomJS,SlimerJS)或Cheerio。
> JSDOM相当慢,因为它必须在Node.js中重新创建DOM和CSSOM。
> PhantomJS / SlimerJS是正确的无头浏览器,因此性能确定,而且也非常可靠。
> Cheerio是JSDOM的轻量级替代品。它不会在Node.js中重新创建整个页面(它只是下载和解析DOM – 没有执行javascript)。因此,您无法真正点击按钮/链接,但是抓取网页非常快。
根据您的要求,我可能会喜欢无头浏览器。特别是,我会选择CasperJS,因为它有一个很好的表现力的API,它是快速和可靠的(它不需要重新发明如何解析和渲染dom或css像JSDOM),这很容易与按钮和链接等元素进行交互。
您在CasperJS中的工作流程应该看起来或多或少是这样的:
casper.start(); casper .then(function(){ console.log("Start:"); }) .thenopen("https://www.domain.com/page1") .then(function(){ // scrape something this.echo(this.getHTML('h1#foobar')); }) .thenClick("#button1") .then(function(){ // scrape something else this.echo(this.getHTML('h2#foobar')); }) .thenClick("#button2") thenopen("http://myserver.com",{ method: "post",data: { my: 'data',} },function() { this.echo("data sent back to the server") }); casper.run();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。