在抓取数据时,很大一部分需求是抓取网页上的关系型表格。
对于表格而言,R语言和Python中都封装了表格抓取的快捷函数,R语言中XML包中的readHTMLTables函数封装了提取HTML内嵌表格的功能,rvest包的read_table()函数也可以提供快捷表格提取需求。Python中read_html同样提供直接从HTML中抽取关系表格的功能。
HTML语法中内嵌表格有两类,一类是table,这种是通常意义上所说的表格,另一类是list,这种可以理解为列表,但从浏览器渲染后的网页来看,很难区分这两种,因为效果上几乎没有差异,但是通过开发者工具的后台代码界面,table和list是两种截然不同的HTML元素。
以上所说到的函数是针对HTML文档中不同标签设计的,所以说如果不加区分的使用这些函数提取表格,很可能对于那些你认为是表格,但是是实际上是list的内容无效。
library("RCurl")library("XML")library("magrittr")library("rvest")
针对XML包而言,一共有三个HTML元素提取的快捷函数,分别是针对HTML表格元素,列表元素,和链接元素,这些快捷函数都是:
readHTMLTable()#获取网页表格readHTMLList()#获取网页列表getHTMLlinks()#从HTML网页获取链接
readHTMLTable
readHTMLTable(doc,header=TRUE)#theHTMLdocumentwhichcanbeafilenameoraURLoran#alreadyparsedHTMLInternalDocument,oranHTMLnodeofclass#XMLInternalElementNode,oracharactervectorcontainingtheHTML#contenttoparseandprocess.
该函数支持的HTML文档格式非常广泛,doc可以是一个url链接,可以是一个本地html文档,可以是一个已经解析过的HTMLInternalDocument部件,或者提取出来的HTML节点,甚至包含HTML语法元素的字符串向量。
以下是一个案例,也是我自学爬虫时爬过的网页,后来可能有改版,很多小伙伴儿用那些代码爬不出来,问我咋回事儿。自己试了以下也不行,今天借机重新梳理思路。
大连市年空气质量数据可视化~
URL-"