2013-11-25 46 views
1

我需要獲取網站(所有鏈接)中所有網頁的列表。我必須使用Phantomjs,但我以前從未使用它。任何人都可以解釋我,我可以如何使用它?如何在Phantomjs的幫助下解析html代碼以獲取所有鏈接?如何使用Phantomjs獲取URI

回答

1

PhantomJS是一款帶JavaScript API的無頭WebKit腳本。它被重新描述爲一個單一的可執行文件。

有針對Windows,Mac OU Linux的正式發佈,但如果你願意,你也可以建立自己的版本。

  • 創建一個腳本

PhantomJS通過本身並沒有什麼,它只是一個可執行文件。你必須編碼/編寫你的動作。它由JavaScript或咖啡腳本完成。

  • 運行腳本

在命令提示符下鍵入,您只需要編寫

> phantomjs yourscript.js 

有時候,你必須創造一個phantomjs的包裝。特別是在WPF中,使用Process/ProcessStartInfo類來管理腳本執行。

  • 如何編寫腳本?

如果您熟悉Javascript,特別是Node.js開發,學習曲線很小。 quick start可能是寶貴的,不要猶豫,用available examples練習自己。這是最困難的部分,但在幾個腳本之後它會更容易。

要回答你最初的問題,這裏是一個可能的腳本

var page = require('webpage').create(); 
var system = require('system'); 

if (system.args.length != 2) { 
    console.log('Usage: so20189669.js <URL> '); 
    phantom.exit(1); 
} else { 
    var url = system.args[1]; 
    page.open(url, function (status) { 
     if (status !== 'success') { 
      console.log('Unable to load the address!'); 
      phantom.exit(); 
     } else { 
      var links = page.evaluate(function() { 
       return [].map.call(document.querySelectorAll('a'), function (link) { return link.getAttribute('href') }); 
      }); 

      console.log(JSON.stringify(links)); 
      phantom.exit(); 
     } 
    }); 
} 

在命令提示符:

>phantomjs.exe so20189669.js http://stackoverflow.com/questions/20189669/how-to-get-uri-with-phantomjs 

有沒有神奇的答案,你將有它根據自己的需要來改變!