微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 通过点击按钮来浏览网页并浏览

我想在服务器端执行以下操作:

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 举报,一经查实,本站将立刻删除。

相关推荐