2012-03-19 76 views
1

我需要使用R來下載網頁的源代碼。如何查看使用R的網頁源代碼?

當我點擊Firefox中的「查看源代碼」時,我看到了所有的源代碼。 但是,當我使用RCurl下載源代碼時,我只能看到它的一部分。缺少的部分是由Javascript生成的,所以也許這就是問題所在? RCurl能否看到Javascript製作的信息?

如何將源代碼轉換爲R?無論是通過RCurl就像我已經嘗試或成爲一個txt文件,然後加載到R將罰款。

由於

回答

0

RCurl只是處理傳遞的HTTP部分;它沒有Javascript解釋器來執行頁面中的代碼(可以下載額外的HTML或直接寫入)。您將需要找到一個命令行程序,它既可以下載URL,也可以執行隨附的Javascript,然後將結果保存到文件中。那麼你可以使用system()來調用這個程序。

+0

謝謝 命令行程序的任何建議,將做到這一點? – user1107035 2012-03-19 22:08:02

+0

對不起,我沒有任何程序那樣做的經驗。我想也許你可以用firefox來做到這一點,但是在我的快速搜索中我沒有看到任何明顯的東西。 – 2012-03-19 22:14:01

2

elinks文本瀏覽器有一些javascript支持。請參閱文檔以瞭解如何配置/增強此支持:

elinks -dump www.google.com 

將爲您提供網站的渲染版本。

更好的選擇是使用mozrepl。它連接到Firefox和從命令提示符,你可以做任何你可以從網頁中的JavaScript做:

telnet localhost 4242 
repl> var w=window.open("https://google.com") 
repl> w.document.getElementsByTagName('html')[0].innerHTML 

應該給你的頁面。

的問題是,如何讓有R這項工作:

mz <- socketConnection("localhost", "4242") 
writeLines("var w=window.open(\"https://google.com\")\n",mz) 
out <- readLines(mz) #empty the buffer 
writeLines("w.document.getElementsByTagName('html')[0].innerHTML\n", mz) 
out <- readLines(mz) 
str(out) 

應該給:

chr [1:73] "repl> repl> \"<head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"><meta itemprop=\"image\" content=\"/"| __truncated__ ... 

,您可以進一步過濾您所需要的。

相關問題