使用rvest提取html表格

Jo *_*zyd 2 xpath r

我是 R 的新学习者,我对使用 rvest 提取 html 表并提交 html 表单感兴趣。

现在,我想从一个中文网站上获取一些有用的信息。网址是:

http://caipiao.163.com/award/cqssc/20160513.html

我使用的是带有 RStudio 版本 0.99.896 的 Windows 10 Professional,我使用 Google Chrome 作为带有 XPATH 帮助程序插件的网络浏览器。

我想从中文站点提取主html表,它包含120组关于彩票中奖号码的信息。第一个(001)是:98446,最后一个(120)是:01798;我只想提取数字(001)到(120)和中奖号码:98446到01798。

我使用 XPATH 助手和 Chrome 网络开发来获取 XPATH。

我认为我想要的信息的 XPATH 是:

//html/body/article[@class='docBody clearfix']/section[@id='mainArea']/div[@class='lottery-results']/table[@class='awardList']/*[@id="mainArea"]/div[1]/table/tbody/tr[2]/td[1]
Run Code Online (Sandbox Code Playgroud)

但是当我在 RStudio 中运行以下代码时,我无法得到我想要的结果。以下是我的代码:

> library(rvest)
Loading required package: xml2
> url <- "http://caipiao.163.com/award/cqssc/20160513.html"
> xp <- "//html/body/article[@class='docBody clearfix']/section    [@id='mainArea']/div[@class='lottery-results']/table[@class='awardList']/*[@id='mainArea']/div[1]/table/tbody/tr[2]/td[1]"
> 
> x <- read_html(url)
> y <- x %>% html_nodes(xpath=xp)
> y
{xml_nodeset (0)}

>
Run Code Online (Sandbox Code Playgroud)

请看一下我的代码,如果我犯了任何错误,请告诉我。你可以直接忽略那些不认识的汉字,它们不重要,我只想得到数字。

谢谢!约翰

hrb*_*str 5

没有必要使用如此精确的目标选择器,因为只有一个table元素(正如另一位回答者所指出的)。但你不需要留下rvest

library(rvest)

URL <- "http://caipiao.163.com/award/cqssc/20160513.html"

pg <- read_html(URL)
tab <- html_table(pg, fill=TRUE)[[1]]

str(tab)

## 'data.frame': 40 obs. of  39 variables:
##  $ ??    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ????: chr  "9 8 4 4 6" "1 8 3 1 6" "2 9 3 5 6" "1 4 5 8 0" ...
##  ....
Run Code Online (Sandbox Code Playgroud)

(SO 正在将一些 unicode 字形解释为垃圾邮件,因此我不得不删除其他列)。

第二列通过页面加载后 javascript 操作进行压缩,因此如果这是您想要的,则需要稍微清理一下。