2010-12-13 52 views
1

有誰知道XPath表達式可以讓我提取從baidu.com返回的所有搜索結果?從中文搜索中提取網頁鏈接的XPath表達式(baidu.com)

例如,在R,我通常會做這樣的事情的:

# load libraries  
library(RCurl) 
library(XML) 

# get webpage 
doc <- getURL("http://www.baidu.com/s?rn=100&bs=chivas+regal&f=8&wd=chivas+regal") 

# html structure 
html <- htmlTreeParse(doc, useInternalNodes = TRUE, error=function(...){}) 

# use xpath expression to get links 
nodes <- getNodeSet(html, "//a[@href]") 

然而,這僅獲得約10個鏈接,當我應該有100左右。所以,我認爲,這意味着有一些關於baidu html結構對我來說不是很清楚。

非常感謝您的時間。

+0

使用[Tidy](http://valet.htmlhelp.com/tidy/)並將名稱空間綁定添加到XPath表達式,它按預期工作。錯誤可能出現在您的HTML解析器或XPath引擎中。相應地重新標記。 – 2010-12-13 16:24:27

回答

2

如果Xpath不是絕對要求,請嘗試使用基於正則表達式的方法。以下假定所有鏈接都以http://開頭,並用雙引號引起來。它使用strapply來匹配指定的正則表達式,並提取出反向引用,即括號內的部分。

URL <- "http://www.baidu.com/s?rn=100&bs=chivas+regal&f=8&wd=chivas+regal" 
Lines <- readLines(URL) 
library(gsubfn) 
links <- strapply(Lines, '"(http://[^"]*)"', simplify = c) 
+0

+1非常好,我可以利用這個! – 2011-03-01 14:07:28