2012-03-08 50 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