【问题标题】:How to run my js function after clicked a button add the dom has reloaded单击按钮后如何运行我的js函数添加dom已重新加载
【发布时间】:2013-05-31 08:00:36
【问题描述】:

我想用js爬取一个网站,但是网站使用ajax来分页内容。一开始只能爬取首页内容。您必须单击一个按钮(下一页),该网站使用 ajax 来更新网页的内容。

问题:我可以用js找到按钮,然后点击。但是我怎么知道页面何时重新加载。我可以获取更新的内容。

谢谢。

【问题讨论】:

  • 我认为你可以直接向下一页的ajax目标发送请求并与响应进行交互。 “下一页”请求 url 必须有一个模式。
  • 好主意。但是点击事件做了很多复杂的事情,所以我希望我可以模拟点击动作。

标签: javascript ajax web-crawler


【解决方案1】:

在这种情况下,您尝试爬取的 Web 上下文包括通过 AJAX 进行的动态内容,如果您想使用 Javascript 来实现这一目标,CasperJS 是一个很好的选择。您可以使用它来触发事件、添加流程步骤、包含在每次 ajax 调用之后等待和验证的函数,然后再处理任何下一步。

这里是一个如何使用 CasperJS 和 JQuery 抓取网站的示例
CasperJs and Jquery with chained Selects

这里是一个如何使用 CasperJS 和 JavaScript 抓取网站的示例
CasperJS dynamic selectlists

【讨论】:

    【解决方案2】:

    我会使用“无头”浏览器来完成这样的任务:

    PhantomJS

    Casper

    特别是 casperJS 的 click 函数可以用于你想要的。

    或者填写表格的给定示例非常简单:

    casper.start('http://google.fr/', function() {
        // search for 'casperjs' from google form
        this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });
    

    来自 casperJs 的 Quickstart

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 2020-12-16
      • 2014-08-10
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2017-07-25
      相关资源
      最近更新 更多