如何下载网页的源代码?

chu*_*ngh 2 html javascript r

当我使用FireFox的'Inspect Element'功能时,HTML源文件中没有显示div标签.换句话说,我需要的信息是JavaScript代码,但不是HTML页面源代码.有没有办法将这些信息读入R?

我发现了一个类似的问题:如何使用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)
Run Code Online (Sandbox Code Playgroud)

但它为我返回chr(0).

有人可以帮助解决上述R代码,或建议替代解决方案吗?

谢谢.

已解决:上面的代码以前没有工作,但是由于没有足够的时间来加载页面.可能不是解决这个问题的最有效方法,但仍然是一个解决方案.感谢大家

GSe*_*See 5

您可以使用getURLRCurl获得HTTP响应.

library(RCurl)
address <- "https://discussions.apple.com/thread/4356115?tstart=0"
txt <- getURL(address)
Run Code Online (Sandbox Code Playgroud)

现在,您可以在开始标记上吐出字符串,然后将其拆分在结束标记上

ss <- strsplit(txt, "<strong class=\"jive-thread-reply-message-correct-label\">")[[1]]
strsplit(ss[2], "</strong>")[[1]][1]
Run Code Online (Sandbox Code Playgroud)

这使:

[1] "This solved my question"
Run Code Online (Sandbox Code Playgroud)

事实证明,你想要的div标签不止一个,而上面的错误标签就是错误的.我不知道如何在R中纯粹做到这一点,但是我跟着VitoshKa 引用帖子,我得到了它的工作.

首先,在Firefox中转到工具 - >附加组件.搜索并安装mozrepl.然后,在Firefox中单击工具 - > MozRepl - >开始.

现在,在R:

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

(loc <- grep("jive-thread-reply-message-correct-label", out))
#[1] 1150 2845
Run Code Online (Sandbox Code Playgroud)

现在,out向量loc是否包含包含标记的字符串的位置.它出现两次.第一个是你感兴趣的那个.

out[loc[1]]
Run Code Online (Sandbox Code Playgroud)

您可以使用与上面显示的相同方式strsplit或使用正则表达式从中提取信息gsub


您可以关闭打开的窗口 writeLines("w.window.close()", mz)