【发布时间】:2010-12-09 00:33:48
【问题描述】:
我希望抓取以下 wiki 文章:http://en.wikipedia.org/wiki/Periodic_table
这样我的 R 代码的输出将是一个包含以下列的表格:
- 化学元素简称
- 化学元素全称
- 化学元素 wiki 页面的 URL
(显然,每个化学元素都有一行)
我正在尝试使用 XML 包获取页面内的值,但似乎一开始就卡住了,所以我希望有一个关于如何做到这一点的示例(和/或相关示例的链接)
library(XML)
base_url<-"http://en.wikipedia.org/wiki/Periodic_table"
base_html<-getURLContent(base_url)[[1]]
parsed_html <- htmlTreeParse(base_html, useInternalNodes = TRUE)
xmlChildren(parsed_html)
getNodeSet(parsed_html, "//html", c(x = base_url))
[[1]]
attr(,"class")
[1] "XMLNodeSet"
【问题讨论】:
-
您为什么要废弃该页面?从其他地方获取您的数据,定期系统不会经常更改。这些链接必须遵循某种模式......
-
如果不是你,Tal,问这个问题我会很怀疑,但我知道你的动机一定很纯粹。该页面是“受保护的”,因此即使 R 有方便的工具来访问特殊的 Wiki 界面,它们也可能无法用于此操作。尝试转到此页面:en.wikipedia.org/w/…
-
语言点:'scrape'是'scraping'的动词。 “报废”的意思是把它变成垃圾! 'Scrap' 得到两个 'p' - 所以'scrapping a page' 意味着把它变成垃圾,'scraping a page' 是从中获取数据!
-
@Tal:我没有意识到这会是一个多么好的问题。两个很棒的回复!
-
每个维基媒体页面都可以返回 XML 格式而不是 HTML - 例如en.wikipedia.org/wiki/Special:Export/Periodic_Table 在这里阅读更多:mediawiki.org/wiki/Manual:Parameters_to_Special:Export
标签: xml r web-scraping