下面的两个帖子是从网站提取数据并将其解析为R的不同方法的很好的例子.
Scraping html tables into R data frames using the XML package
How can I use R (Rcurl/XML packages ?!) to scrape this webpage
我刚刚开始编程,而且刚刚开始使用R,所以我希望这个问题是非常基本的,但是考虑到上面的那些帖子,我想象是这样的.
所有我想要做的是提取与给定模式匹配的链接.我觉得我可以使用RCurl来阅读网页,并使用字符串表达式提取它们的强力方法.也就是说,如果网页格式相当,我将如何使用XML包进行这样的操作.
当我学到更多的东西时,我喜欢“看”数据,因为我正在解决这个问题.问题是,其中一些方法生成列表列表等列表,所以新的人(像我)很难走过我需要去的地方.
再次,我是所有的编程新手,所以任何帮助或代码片段将不胜感激.
解决方法
htmlTreeParse的文档显示了一种方法.这是另一个:
> url <- "https://stackoverflow.com/questions/3746256/extract-links-from-webpage-using-r" > doc <- htmlParse(url) > links <- xpathSApply(doc,"//a/@href") > free(doc)
(您可以通过将“链接”传递给“as.vector”,从返回的链接中删除“href”属性.)
我以前的回复:
一种方法是使用Hadley Wickham的stringr包,您可以使用install.packages(“stringr”,dep = TRUE)进行安装.
> url <- "https://stackoverflow.com/questions/3746256/extract-links-from-webpage-using-r" > html <- paste(readLines(url),collapse="\n") > library(stringr) > matched <- str_match_all(html,"<a href=\"(.*?)\"")
(我想有些人可能不会批准在这里使用正则表达式)
匹配是矩阵的列表,在向量html中每个输入字符串一个,因为它在这里有一个长度,匹配只有一个元素.第一个捕获组的匹配在该矩阵的第2列中(通常,第i个组将出现在列(i 1)中).
> links <- matched[[1]][,2] > head(links) [1] "/users/login?returnurl=%2fquestions%2f3746256%2fextract-links-from-webpage-using-r" [2] "http://careers.stackoverflow.com" [3] "http://Meta.stackoverflow.com" [4] "/about" [5] "/faq" [6] "/"