我需要使用R來下載網頁的源代碼。如何查看使用R的網頁源代碼?
當我點擊Firefox中的「查看源代碼」時,我看到了所有的源代碼。 但是,當我使用RCurl下載源代碼時,我只能看到它的一部分。缺少的部分是由Javascript生成的,所以也許這就是問題所在? RCurl能否看到Javascript製作的信息?
如何將源代碼轉換爲R?無論是通過RCurl就像我已經嘗試或成爲一個txt文件,然後加載到R將罰款。
由於
我需要使用R來下載網頁的源代碼。如何查看使用R的網頁源代碼?
當我點擊Firefox中的「查看源代碼」時,我看到了所有的源代碼。 但是,當我使用RCurl下載源代碼時,我只能看到它的一部分。缺少的部分是由Javascript生成的,所以也許這就是問題所在? RCurl能否看到Javascript製作的信息?
如何將源代碼轉換爲R?無論是通過RCurl就像我已經嘗試或成爲一個txt文件,然後加載到R將罰款。
由於
RCurl
只是處理傳遞的HTTP部分;它沒有Javascript解釋器來執行頁面中的代碼(可以下載額外的HTML或直接寫入)。您將需要找到一個命令行程序,它既可以下載URL,也可以執行隨附的Javascript,然後將結果保存到文件中。那麼你可以使用system()
來調用這個程序。
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__ ...
,您可以進一步過濾您所需要的。
謝謝 命令行程序的任何建議,將做到這一點? – user1107035 2012-03-19 22:08:02
對不起,我沒有任何程序那樣做的經驗。我想也許你可以用firefox來做到這一點,但是在我的快速搜索中我沒有看到任何明顯的東西。 – 2012-03-19 22:14:01