我試圖從以下網頁http://ipt.humboldt.org.co/中提取「樣本」類型的鏈接。我可以使用以下代碼從網頁獲取表格:從html表中提取鏈接
但是,在使用readHTML命令後鏈接丟失。
我試圖從以下網頁http://ipt.humboldt.org.co/中提取「樣本」類型的鏈接。我可以使用以下代碼從網頁獲取表格:從html表中提取鏈接
但是,在使用readHTML命令後鏈接丟失。
它結束了一個複雜的XPath表達式:
library(XML)
sitePage<-htmlParse("http://ipt.humboldt.org.co/")
hyperlinksYouNeed<-getNodeSet(sitePage,"//table[@id='resourcestable']
//td[5][.='Specimen']
/preceding-sibling
::td[3]
/a
/@href")
,但讓我解釋一下XPath表達式逐位:
//table[@id='resourcestable']
- >這樣,我們所得到的主表在頁面上稱爲'resourcestable'
//td[5][.='Specimen']
- >現在我們只過濾這些行的類型爲標本
/preceding-sibling
- >現在我們開始向後看
::td[3]
- > 3個步驟是我們在哪裏向後精確計數。小心前同輩開始倒數,因此TD [1]是類型列,TD [2]是組織柱和TD [3]是我們想要的名稱列。
/a
- >現在明白了包括一個節點
/@href
- >最後更精確的href屬性內容
xmlFun<-function(x){
y<-xpathSApply(x,'./a',xmlAttrs)
if(length(y)>0){
list(href=y,orig=xmlValue(x))
}else{
xmlValue(x)
}
}
ans<-readHTMLTable(tableNodes[[1]],elFun=xmlFun,stringsAsFactors = FALSE)
ans$Name<-lapply(ans$Name,function(x){unlist(eval(parse(text=x)))})
ans$Name[ans$Subtype=='Specimen']