XPath表达式从中文搜索中提取网页链接(baidu.com)

时间:2010-12-13 16:03:26

标签: r xpath

有没有人知道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结构的东西,我不清楚。

非常感谢你的时间。

1 个答案:

答案 0 :(得分: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)