- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想抓取以下维基文章:http://en.wikipedia.org/wiki/Periodic_table
这样我的 R 代码的输出将是一个包含以下列的表格:
(显然每个化学元素都有一行)
我正在尝试使用 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"
最佳答案
试试这个:
library(XML)
URL <- "http://en.wikipedia.org/wiki/Periodic_table"
root <- htmlTreeParse(URL, useInternalNodes = TRUE)
# extract attributes and value of all 'a' tags within 3rd table
f <- function(x) c(xmlAttrs(x), xmlValue(x))
m1 <- xpathApply(root, "//table[3]//a", f)
m2 <- suppressWarnings(do.call(rbind, m1))
# extract rows that correspond to chemical symbols
ix <- grep("^[[:upper:]][[:lower:]]{0,2}", m2[, "class"])
m3 <- m2[ix, 1:3]
colnames(m3) <- c("URL", "Name", "Symbol")
m3[,1] <- sub("^", "http://en.wikipedia.org", m3[,1])
m3[,2] <- sub(" .*", "", m3[,2])
一些输出:
> dim(m3)
[1] 118 3
> head(m3)
URL Name Symbol
[1,] "http://en.wikipedia.org/wiki/Hydrogen" "Hydrogen" "H"
[2,] "http://en.wikipedia.org/wiki/Helium" "Helium" "He"
[3,] "http://en.wikipedia.org/wiki/Lithium" "Lithium" "Li"
[4,] "http://en.wikipedia.org/wiki/Beryllium" "Beryllium" "Be"
[5,] "http://en.wikipedia.org/wiki/Boron" "Boron" "B"
[6,] "http://en.wikipedia.org/wiki/Carbon" "Carbon" "C"
我们可以通过从 Jeffrey 的 xpath 表达式开始进一步增强 xpath 表达式(因为它几乎获得顶部的元素)并向它添加一个限定条件来使它更紧凑。在这种情况下,可以使用 xpathSApply
来消除对 do.call
或 plyr 包的需要。我们解决零碎问题的最后一点与以前相同。这会生成一个矩阵而不是数据框,这似乎更可取,因为内容完全是字符。
library(XML)
URL <- "http://en.wikipedia.org/wiki/Periodic_table"
root <- htmlTreeParse(URL, useInternalNodes = TRUE)
# extract attributes and value of all a tags within 3rd table
f <- function(x) c(xmlAttrs(x), xmlValue(x))
M <- t(xpathSApply(root, "//table[3]/tr/td/a[.!='']", f))[1:118,]
# nicer column names, fix up URLs, fix up Mercury.
colnames(M) <- c("URL", "Name", "Symbol")
M[,1] <- sub("^", "http://en.wikipedia.org", M[,1])
M[,2] <- sub(" .*", "", M[,2])
View(M)
关于xml - 为 "Periodic table"和所有链接抓取 wiki 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4393780/
我在父项目 A 的子项目 B 中有几个 wiki 页面。现在我想将它们从 B 的 wiki 移动到 A 的 wiki。如何在不复制和粘贴所有页面的情况下执行此操作? Redmine论坛的人建议直接编辑
如果两个用户编辑同一个 wiki 主题,wiki(或类似的协作编辑软件)中使用了什么方法将第二个用户的编辑与第一个用户的编辑合并? 我想要一个解决方案: 不需要锁定 不会丢失对页面的任何添加。 它可能
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我们正在向许多地方的许多用户(8 个国家/地区的 200 多个用户)部署新的软件系统。过去,我们为用户编写了手册,然后经常更新。这很好用,因为所有用户都有相同的手册,它涵盖了主要内容,但也有问题,比如
这张 table 是什么样子的——只有一张吗?你如何恢复到旧版本?类似于堆栈溢出的工作方式。 最佳答案 解决此问题的最佳方法是查看其他软件,例如 MediaWiki,并了解它们如何构建数据库。然后,您
我正在尝试使用 Redmine wiki,但我很难弄清楚如何使文本看起来不那么大。这是我正在做的标记示例。关于如何使文本看起来不那么大的任何建议。 h1. Best Practices
在Redmine Wiki中,有什么方法可以在标题中使用项目符号点编号,例如 # h1. Heading 1 ## h2. Sub Heading 1 # h1. Heading 2 输出如下
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
目前我们团队正在使用MoinMoin作为 IT wiki,它非常好。 我们希望促进最终用户使用 wiki,因为他们中的一些人对此感兴趣。例如,我们将在 wiki 上共享和编辑应用程序的要求。 我认为
我的公司将使用Confluence在我们的IT系统上存储和共享我们的知识库,并且可以用于涵盖从硬件管理到程序员所面临的问题的主题。 我对建立全局空间的最佳做法感到好奇。为整个IT部门拥有一个大型的,万
对于我正在开发的应用程序 (*),我需要混合使用动态生成的页面和静态页面。使用 wiki 会很酷,一旦动态页面被第一次访问,它就会变成静态页面,用户可以像任何其他静态 wiki 页面一样对其进行注释。
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
您在公司中使用 wiki 吗?谁使用它以及为什么使用它。您是否在项目/团队/部门之间共享信息? 最佳答案 我们用我们的来存储 编码风格文档 网络服务器和网站的设置和部署程序 网络图(Dev、Stagi
我在 Trac wiki 中创建了一些文档。我将这些页面设置为都以相同的模式开始(例如“MyDoc ...”)。我想从 Trac 中检索以该模式开头的页面的所有 wiki 页面链接。 有办法吗? 最佳
我和我的 friend 正在考虑创建我们自己的 wiki。鉴于它们最近变得如此普遍,我们听说这并不难。我们希望网站尽可能简单——我们在网页设计方面有一些经验,但在系统管理方面没有很多经验。 futur
我的服务器上运行着一个 Gitlab CE 11.7 docker。当我从 gitlab.com 导入一个项目时,它的 wiki 丢失了。我使用内置界面导入项目: 新建项目 > 导入项目 [tab]
我在我的 Wiki 中构建了一个非常广泛的表格,在列结构方面具有以下格式。是否可以在 Wiki 中插入一个计数器来跟踪此表中的列数? |- | 1||[Site Link]||Country 1|
我的 Confluence wiki 中有一个页面,它是通过脚本自动生成的,并通过其 API 被推送到 Confluence 中。因此我不需要这个页面的历史,因为页面版本的数量会很快增加。 有没有办法
是否可以在类似于 cloak macro 的 trac wiki 中显示和隐藏内容块?汇合的? 最佳答案 它已经几个月大了,但我想知道同样的事情。 Remy Blank 的回答让我走上了正轨,他只是错
我想将 100 多个 RTF 文件转换为 Wiki 标记,但我只能在网络上甚至在 StackOverflow 上找到“Wiki to RTF”转换器。 我只需要 RTF --> Wiki 标记 外面有
我是一名优秀的程序员,十分优秀!