2012-03-08 48 views
4

我可以通过Firebug在网页的标题中粘贴一个jQuery javascript链接。然后,我可以运行脚本来抓取它以及它所链接的页面。如何用jQuery和XPath来抓取网页?

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

回答

5

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

所以,你的脚本应该:

  1. 下载HTML页面(jsdom这是否适合你,但你可以使用request
  2. 使用jQuery
  3. 创建一个客户端DOM
  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 
3

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

+0

谢谢。你的项目听起来有趣。我使用jQuery和Javascript的原因是,我试图抓取的页面受到登录保护。你认为这会起作用吗? – dangerChihuahua007 2012-03-18 22:10:45

+0

你肯定可以使用PhantomJS来做这件事,但是可能没有一个好的办法可以用pjscrape做 - 但这取决于登录设置。另一个选择是使用Selenium,它实际上在一个开放的浏览器中运行 - 这使它能够处理非常复杂的登录操作。 – nrabinowitz 2012-03-19 03:30:11