如何使用R查看网页源代码?

时间:2012-03-19 21:15:48

标签: javascript r

我需要使用R来下载网页的源代码。

当我点击Firefox中的“查看源代码”时,我会看到所有的源代码。 但是,当我使用RCurl下载源代码时,我只看到它的一部分。缺少的部分是由Javascript生成的,所以也许这就是问题所在? RCurl可以看不到Javascript生成的信息吗?

如何将源代码导入R?无论是通过RCurl,我已经尝试过或进入过txt文件,然后加载到R中就可以了。

由于

3 个答案:

答案 0 :(得分: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__ ...

您可以根据需要进一步过滤。

答案 1 :(得分:1)

RCurl只处理传输的HTTP部分;它没有Javascript解释器来执行页面中的代码(可以下载额外的HTML或直接编写它)。您需要找到一个命令行程序,它既可以下载URL,也可以执行附带的Javascript,然后将结果保存到文件中。您可以使用system()调用此程序,然后使用。

答案 2 :(得分:0)

我一直在为完全相同的任务而苦苦挣扎几个星期。我建议最直接的方法是使用RSelenium库中的var prmpt = parseInt(prompt("Enter your fav number, 1-50")); for (i = 1; i <= 50; i++) { if (i === prmpt) { console.log("Yikes, get this " + prmpt + " number outta here!"); } else { console.log(i); } }。 RSelenium基础小插图https://cran.r-project.org/web/packages/RSelenium/vignettes/basics.html进行了概述。

rsDriver