写网页用什么语言
r语⾔html爬⾍,如何⽤R语⾔爬取⽹页中的表格
今天我们要讲怎么样⽤R写⼀个⼩的爬⾍,来爬取⽹页中的表格。这⾥的⽹页指html页⾯。稍微百度⼀下⼤家就可以知道,html是⼀种⾼度结构化的⽂本标记语⾔。html表格所⽤的标签是
所以我们的思路⼤概就是,到html页⾯⾥⾯的标签
当然你愿意的话也可以爬取其他表格,这个只是举个例⼦。
这种情况下有个问题要注意,你需要知道你爬取的是哪个表格,⽅法我们之后说。
代码:
#再如需要的package,做这个爬⾍我们只需要这⼀个package就够了library(rvest)
#将⽬标URL赋予url变量url %  html() %>%  html_nodes(xpath = '//*[@id="box_gsw_basic"]') %>%  html_table()
⼤家注意上⾯的「//[@id=”box_gsw_basic”]」,这个东西是什么?这个东西就是我刚才说的,我们需要
知道我们要爬取的是哪个表格,需要通过⾝份标识来确定我们要爬取的表格,「//[@id=”box_gsw_basic”]」就是我们要爬取表格的⾝份标识。这是⼀个叫XPath 的路径索引语⾔,是题外话了,以后可以讲。那么怎么样可以获取每个表格的⾝份标识呢,这就要感谢Chrome了。
打开刚才的⽹页,到想要爬取的表格,随便把⿏标放在表格中某个位置,然后点击右键
点击弹出菜单的最后⼀项,inspect,这时候右边会弹出来开发者⼯具栏,
码。右边的代码块往上拉,⼀直到这个标签,我们发现整个表格都被highlight了,这就说明我们到想要的内容了。
然后在右边的代码块右键,选择copy,选择copy XPath,这样这个表格的⾝份标识我们就拿到了。
有了标识我们就可以继续上⾯的代码,获取表格了。利⽤同样的⽅法,⼤家也可以爬取其他表格,此处就不赘述了。
爬下来表格被赋予给了wa变量,wa是个list数据类型的变量,我们需要将list变成dataframe
#将wa变成dataframe,list、dataframe⼜是另外⼀个话题,以后说。wa
然后我们在控制台输⼊wa,看看爬下来的表格是什么样⼦,
str(wa)'data.frame':    13 obs. of  21 variables: $                      : chr  "Starters" "Stephen Curry" "Harrison Barnes" "Andrew Bogut" ... $ Basic Box Score Stats: chr  "MP" "57:56" "52:42" "36:58" ... $ Basic Box Score Stats: chr  "FG" "18" "8" "4" ... $ Basic Box Score Stats: chr  "FGA" "35" "14" "7" ... $ Basic Box Score Stats: chr  "FG%" ".514" ".571" ".571" ... $ Basic Box Score Stats: chr  "3P" "6" "3" "0" ... $ Basic Box Score Stats: chr  "3PA" "14" "6" "0" ... $ Basic Box Score Stats: chr  "3P%" ".429" ".500" "" ... $ Basic Box Score Stats: chr  "FT" "2" "0" "2" ... $ Basic Box Score Stats: chr  "FTA" "2" "0" "6" ... $ Basic Box Score Stats: chr  "FT%" "1.000" "" ".333" ... $ Basic Box Score Stats: chr  "ORB" "0" "3" "2" ... $ Basic Box Score Stats: chr  "DRB" "4" "9" "13" ... $ Basic Box Score Stats: chr  "TRB" "4" "12" "15" ... $ Basic Box Score Stats: chr  "AST" "11" "0" "4" ... $ Basic Box Score Stats: chr  "STL" "2" "0" "1" ... $ Basic Box Score Stats: chr  "BLK" "0" "0" "1" ... $ Basic Box Score Stats: c
hr  "TOV" "6" "3" "2" ... $ Basic Box Score Stats: chr  "PF" "3" "5" "3" ... $ Basic Box Score Stats: chr  "PTS" "44" "19" "10" ... $ Basic Box Score Stats: chr  "+/-" "-2" "-3" "+5" ...
可以看到命名还有点问题,⼀共21个变量,分别是,球员名称、上场时间、投篮命中数、投篮出⼿数、投篮命中率、三分命中数、三分出⼿数、三分命中率、发球命中数、发球出⼿数、发球命中率、前场篮板数、后场篮板数、总篮板数、助攻数、抢断数、盖帽数、失误数、个⼈犯规数、得分数、正负值。⽽每个变量的命名都是Basic Box Score Stats,因⽽我们需要修改⼀下命名。
names(wa)
现在看看表格的内容
第1⾏和第7⾏是原表格区分⾸发球员和板凳球员⽤的,我们可以删掉wa
⾄此,⼤功告成