首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何下载网页的源码?

如何下载网页的源码?
EN

Stack Overflow用户
提问于 2013-01-24 07:55:07
回答 2查看 3.3K关注 0票数 2

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

我发现了一个类似的问题:How to view webpage source code using R?

使用建议的代码:

代码语言:javascript
复制
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(0)。

有人可以帮助上面的R代码,或者建议一个替代解决方案吗?

谢谢。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-24 08:35:43

您可以从使用getURL来获取HTTP响应。

代码语言:javascript
复制
library(RCurl)
address <- "https://discussions.apple.com/thread/4356115?tstart=0"
txt <- getURL(address)

现在,您可以在开始标记上打开字符串,然后在结束标记上拆分它

代码语言:javascript
复制
ss <- strsplit(txt, "<strong class=\"jive-thread-reply-message-correct-label\">")[[1]]
strsplit(ss[2], "</strong>")[[1]][1]

这就给出了:

代码语言:javascript
复制
[1] "This solved my question"

事实证明,您想要的div标签不止一个,上面的标签得到了错误的标签。我不知道如何在纯R中做到这一点,但我通过VitoshKa跟踪了the post you referenced,并让它正常工作。

首先,在火狐中,进入Tools -> Add-ons。搜索并安装mozrepl。然后,在Firefox中单击Tools -> MozRepl -> Start。

现在,在R

代码语言:javascript
复制
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

现在,out是一个向量,loc保存包含标签的字符串的位置。它出现了两次。第一个是你感兴趣的。

代码语言:javascript
复制
out[loc[1]]

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

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

票数 6
EN

Stack Overflow用户

发布于 2013-01-24 07:59:59

你必须在html上运行一个完整的javascript解释器。

您可以使用Rhino。它会很慢。

否则,你将需要像selenium RC一样驱动浏览器。(您可以使用selenium .net库)

你最好通过检查来弄清楚javascript做了什么,而不是天真的抓取。

如果您对抓取很感兴趣,还可以学习XPATH查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14491598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档