当前位置: 首页 > 面试题库 >

抓取网页并通过单击按钮进行导航

凌钊
2023-03-14
问题内容

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

1)抓取网页
2)模拟对该页面的单击,然后导航到新页面。
3)刮开新页面
4)模拟新页面上的一些按钮单击
5)通过json或其他方式将数据发送回客户端

我正在考虑将其与Node.js一起使用。

但是我对应该使用哪个模块感到困惑
a)corpse
b)Node.io
c)Phantomjs
d)JSDOM
e)其他

我已经安装了node,io,但是无法通过命令提示符运行它。

PS:我在Windows 2008 Server中工作


问题答案:

Zombie.js和Node.io在JSDOM上运行,因此您的选择要么与JSDOM(或任何等效的包装器)一起使用,要么是无头浏览器(PhantomJS,SlimerJS)或Cheerio。

  • JSDOM相当慢,因为它必须在Node.js中重新创建DOM和CSSOM。
  • PhantomJS / SlimerJS是合适的无头浏览器,因此性能还可以,而且非常可靠。
  • Cheerio是JSDOM的轻量级替代品。它不会在Node.js中重新创建整个页面(它只是下载并解析DOM-不执行任何javascript)。因此,您无法真正单击按钮/链接,但是抓取网页的速度非常快。

根据您的要求,我可能会选择无头浏览器。特别是,我之所以选择CasperJS,是因为它具有良好而富于表现力的API,而且它又快速又可靠(它不需要像JSDOM那样重新发明如何解析和渲染domcss的方法),而且非常容易与按钮和链接等元素进行交互。

您在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();


 类似资料:
  • 我需要从一个网站刮数据,有一个隐藏的div不显示,直到你点击一个按钮在网站上。当我使用代码获取html内容时,即使在“Inspect”中可以看到隐藏的div数据,也无法获取隐藏的div内容 url、代码和隐藏DIV的详细信息如下:

  • "在点击'5更多属性'之前:第一张图片显示了4个div,其中包含我可以使用上述任何方法获得的"span"。 点击'5更多属性'后:第二张图片显示9 div,其中包含我试图到达的"span"。 下面是使用硒/美汤的代码 结果:“跨度”中有990个元素。我只是展示与我的问题相关的东西:

  • 我想知道如何选择listview first item select并通过单击按钮自动单击。 使用下面的代码,我可以选择第一行,但无法选择。 这是我的listview点击事件: 非常感谢您的帮助!如果有人想了解更多信息,请务必告诉我,以便我更新我的问题。

  • 问题内容: 我需要自动单击网页中的任何“添加”按钮,如下所示: “ https://groceries.asda.com/search/yoghurt ” 但是,页面中的“添加”按钮都没有名称或ID。所以我不能使用Selenium包中的命令。 谁能帮我? 问题答案: 要单击特定产品的任何特定按钮,可以编写如下方法: 现在,您可以单击传递其标题的任何按钮,如下所示:

  • 问题内容: 我想从网站上获取每天的日出/日落时间。是否可以使用Python抓取网络内容?使用什么模块?有没有可用的教程? 问题答案: 结合使用urllib2和出色的BeautifulSoup库:

  • 问题内容: 我正在使用Python从网站上抓取内容。首先,我用和Python的,但我看到,该网站有一个按钮,通过JavaScript创建的内容,所以我决定使用。 假设我可以使用Selenium等方法找到元素并获取其内容,那么当我可以对所有内容都使用Selenium时,有什么理由要使用? 在这种特殊情况下,我需要使用Selenium来单击JavaScript按钮,以便更好地使用Selenium进行解