刮掉这个URL,R XML并得到兄弟姐妹

嗨:我想废除联邦选区的表格 – 2003年的表格顺序“安大略省”. URL在这里:
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中使用follow-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.联邦选区的标题 – 2003年的代表顺序有一个id =“列表”. HTML中的id是唯一的,因此我们可以对此进行过滤

> // * [@ id =’list’]
找到id等于“list”的节点
> / following-sibling :: table
获取其后面的所有兄弟节点,即表格
> / caption [text()=’Ontario’]
选择具有文本等于“Ontario”的标题的节点
> / ..
回到一个节点

这为您提供了所需的表节点作为列表.只有一个节点满足上述要求.然后可以通过readHTMLTable处理该节点.

点赞