R-网页爬虫:分析HTML代码

栏目: Html · 发布时间: 6年前

内容简介:前一篇文章我们学习了选择器(CSS和XPath)。我们可以从HTML包含唯一的

前一篇文章我们学习了选择器(CSS和XPath)。

我们可以从 https://cran.rstudio.com/web/packages/available_packages_by_name.html 这个网页上获取所有可用的R扩展包。网页看起来简单,想知道选择器的表达式,在页面右击,选择菜单中的审查元素选项(大部分浏览器都有),然后就会出现检查面板。我们可以看到网页底层的HTML代码。

HTML包含唯一的 <table> ,因此可以直接将CSS选择器设为 table ,再用 html_table() 提取表格并返回一个数据框:

library(rvest)
#> 载入需要的程辑包:xml2
page = read_html("https://cran.rstudio.com/web/packages/available_packages_by_name.html")
pkg_table = page %>% 
    html_node("table") %>% 
    html_table(fill = TRUE)

head(pkg_table, 5)
#>         X1
#> 1         
#> 2       A3
#> 3   abbyyR
#> 4      abc
#> 5 abc.data
#>                                                                         X2
#> 1                                                                     <NA>
#> 2 Accurate, Adaptable, and Accessible Error Metrics for Predictive\nModels
#> 3                  Access to Abbyy Optical Character Recognition (OCR) API
#> 4                         Tools for Approximate Bayesian Computation (ABC)
#> 5              Data Only: Tools for Approximate Bayesian Computation (ABC)

这里原始表没有表头。结果数据框使用了默认表头,并且第一行是空的,下面代码解决这个问题:

pkg_table = pkg_table[complete.cases(pkg_table), ]
colnames(pkg_table) = c("name", "title")
head(pkg_table, 3)
#>     name
#> 2     A3
#> 3 abbyyR
#> 4    abc
#>                                                                      title
#> 2 Accurate, Adaptable, and Accessible Error Metrics for Predictive\nModels
#> 3                  Access to Abbyy Optical Character Recognition (OCR) API
#> 4                         Tools for Approximate Bayesian Computation (ABC)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing Data-Intensive Applications

Designing Data-Intensive Applications

Martin Kleppmann / O'Reilly Media / 2017-4-2 / USD 44.99

Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, w......一起来看看 《Designing Data-Intensive Applications》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试