嗨:我想废除联邦选区的表格 - 2003年子表格" Ontario"的代表顺序。网址位于: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来简单地执行此操作并找到特定的表,但我也想知道如何选择与安大略省等同的字幕节点的兄弟节点。 感谢
答案 0 :(得分:2)
您可以在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等于&#34; list&#34; /following-sibling::table
获取其后面的所有兄弟节点,即表格/caption[text()='Ontario']
选择具有文本等于&#34; Ontario&#34; /..
返回节点这为您提供了所需的表节点作为列表。只有一个节点满足上述要求。然后,readHTMLTable
可以处理此节点。