R语言(XML/rvest)下载网页表格
常用R包为XML,rvest
下载的表格首行为列名
解析网页时要理解节点的概念
extract相当于:[
extract2相当于:[[
read_html() 读取html页面
html_nodes() 提取所有符合条件的节点
html_node() 返回一个变量长度相等的list
html_table() 获取table标签中的表格
extract2() 提取list中的表格
XML包
# XML实现网页抓取表格----
library(XML)
# 网页表格待下载
url <- "http://cbadata.sports.sohu.com/ranking/players/2020/0/6"
# 解析网页
doc <- htmlParse(url)
# 获取表格
tableNodes <- getNodeSet(doc, "//table")
list(tableNodes)
# 将HTML转换为数据框
tb <- readHTMLTable(tableNodes[[13]])
# 简写
tb <- htmlParse("http://cbadata.sports.sohu.com/ranking/players/2020/0/6") %>%
getNodeSet("//table") %>%
.[[13]] %>%
readHTMLTable()
names(tb) <- tb[1,]
tb <- tb[-1,]
tb
url <- "http://cbadata.sports.sohu.com/ranking/players/2020/0/6"
tb <- readHTMLTable(url,which = 13)
names(tb) <- tb[1,]
tb <- tb[-1,]
rvest包
# 网页抓取----
library(rvest)
ls("package:rvest")
library(magrittr)
# 实战----
# 以中国统计局的网页为例
tjj_html <- read_html("http://www.stats.gov.cn/tjzs/cjwtjd/201407/t20140714_580886.html")
res_table <- tjj_html %>%
html_nodes("table") %>%
html_table(header=TRUE) %>%
extract2(2)