我是 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)
请看一下我的代码,如果我犯了任何错误,请告诉我。你可以直接忽略那些不认识的汉字,它们不重要,我只想得到数字。
谢谢!约翰
没有必要使用如此精确的目标选择器,因为只有一个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 操作进行压缩,因此如果这是您想要的,则需要稍微清理一下。