我可以通過Firebug在網頁的標題中粘貼一個jQuery javascript鏈接。然後,我可以運行腳本來抓取它以及它所鏈接的頁面。如何用jQuery和XPath來抓取網頁?
如何開始在jQuery或JavaScript中編寫此腳本?在jQuery/Javascript中是否有一個接口,我可以使用XPath訪問頁面上的元素(以及它所鏈接的頁面上的元素)?
我可以通過Firebug在網頁的標題中粘貼一個jQuery javascript鏈接。然後,我可以運行腳本來抓取它以及它所鏈接的頁面。如何用jQuery和XPath來抓取網頁?
如何開始在jQuery或JavaScript中編寫此腳本?在jQuery/Javascript中是否有一個接口,我可以使用XPath訪問頁面上的元素(以及它所鏈接的頁面上的元素)?
您可以迅速獲得頁面的HTML:
var html = document.documentElement.innerHTML;
這隻會返回一個字符串文字,它不會捕捉到根元素。
首先,您需要瀏覽器之外的JavaScript運行時。最常見的是Node.js.接下來,您需要一種方法來創建DOM客戶端。這通常使用jsdom完成。
所以,你的腳本應該:
jsdom
這是否適合你,但你可以使用request)這是一個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
您可能會感興趣的,網絡刮建庫正是這種目的(免責聲明:這是我的項目)。它基於PhantomJS,這是一個可從命令行運行的無頭Webkit實現,它具有非常簡單的語法,用於從多個頁面中抓取數據並查找其他網址以進行抓取和抓取。
謝謝。你的項目聽起來有趣。我使用jQuery和Javascript的原因是,我試圖抓取的頁面受到登錄保護。你認爲這會起作用嗎? – dangerChihuahua007 2012-03-18 22:10:45
你肯定可以使用PhantomJS來做這件事,但是可能沒有一個好的辦法可以用pjscrape做 - 但這取決於登錄設置。另一個選擇是使用Selenium,它實際上在一個開放的瀏覽器中運行 - 這使它能夠處理非常複雜的登錄操作。 – nrabinowitz 2012-03-19 03:30:11
謝謝,你有一個想法,我怎麼能自動颳去它鏈接的頁面呢? – dangerChihuahua007 2012-03-08 16:18:12
只需遍歷子節點'',然後加載這些頁面的內容。 – msanford 2012-03-08 16:30:36