如何使用jQuery和XPath抓取网页?

时间:2012-03-08 15:32:47

标签: javascript jquery xpath web-scraping

我可以通过Firebug将jQuery javascript链接粘贴在网页的标题中。然后,我可以运行一个脚本来抓取它以及链接到的页面。

我如何开始在jQuery或javascript中编写此脚本?是否有jQuery / Javascript中的接口,我可以使用XPath访问页面上的元素(以及它链接到的页面)?

3 个答案:

答案 0 :(得分:5)

首先,您需要在浏览器之外使用JavaScript运行时。最常见的是Node.js.接下来,您需要一种方法来创建DOM客户端。这通常使用jsdom完成。

所以,你的脚本应该:

  1. 下载html页面(jsdom为您执行此操作,但您可以使用request
  2. 创建客户端DOM
  3. 使用jQuery解析
  4. 以下是Node.js脚本示例:

    var jsdom = require("jsdom");
    
    jsdom.env("http://nodejs.org/dist/", [
        'http://code.jquery.com/jquery-1.5.min.js'
      ], function(errors, window) {
      console.log("there have been", window.$("a").length, "nodejs releases!");
    });
    

    你会运行它,如下:

    $ node scrape.js
    

    不要忘记先安装jsdom

    $ npm install --production jsdom
    

答案 1 :(得分:3)

您可以快速获取页面HTML:

var html = document.documentElement.innerHTML;

这只返回一个字符串文字,它不会捕获根元素。

答案 2 :(得分:3)

您可能对pjscrape感兴趣,这是一个为此目的而构建的网络抓取库(免责声明:这是我的项目)。它基于PhantomJS,一个可以从命令行运行的无头Webkit实现,它有一个非常简单的语法,用于从多个页面中抓取数据并查找蜘蛛和抓取的其他URL。