抓取此URL,R XML并获取兄弟姐妹



嗨:我想废弃表格联邦选区 - 2003 年代表令子表"安大略省"。 网址在这里:http://www.elections.ca/content.aspx?section=res&dir=cir/list&document=index&lang=e#list

我已经尝试过这段代码,它让我接近,但并不完全在那里。

doc<-htmlParse('http://www.elections.ca/content.aspx?section=res&dir=cir/list&document=index&lang=e#list', useInternalNodes=TRUE)
doc2<-getNodeSet(doc, "//table/caption[text()='Ontario']")

我知道我可以使用readHTMLTable来简单地做到这一点,只找到特定的表,但我也想知道如何选择等于安大略省的标题节点的同级节点。谢谢

您可以在 XPATH 中使用following-sibling

library(XML)
appURL <- 'http://www.elections.ca/content.aspx?section=res&dir=cir/list&document=index&lang=e#list'
doc<-htmlParse(appURL, encoding = "UTF-8")
tableNode <- doc["//*[@id='list']/following-sibling::table/caption[text()='Ontario']/.."][[1]]
myTable <- readHTMLTable(tableNode)
> head(myTable)
Code          Federal Electoral Districts Population 2006
1 35001                       Ajax–Pickering         117,183
2 35002        Algoma–Manitoulin–Kapuskasing          77,961
3 35003 Ancaster–Dundas–Flamborough–Westdale         111,844
4 35004                               Barrie         128,430
5 35005                    Beaches–East York         104,831
6 35006                 Bramalea–Gore–Malton         152,698

所以要分解 XPATH。标题Federal Electoral Districts – Representation Order of 2003有一个id="list"。HTML 中的 id 是唯一的,因此我们可以对此进行过滤

  • //*[@id='list']查找 id 等于"列表"的节点
  • /following-sibling::table获取其后面的所有同级节点(即表)
  • /caption[text()='Ontario']选择标题文本等于"安大略省"的节点
  • /..返回节点

这将以列表形式提供所需的表节点。只有一个节点满足上述要求。然后可以通过readHTMLTable 处理此节点。

最新更新