当我使用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代码,或建议替代解决方案吗?
谢谢.
已解决:上面的代码以前没有工作,但是由于没有足够的时间来加载页面.可能不是解决这个问题的最有效方法,但仍然是一个解决方案.感谢大家
您可以使用getURL从RCurl获得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)
| 归档时间: |
|
| 查看次数: |
2704 次 |
| 最近记录: |