程序员数据科学与R语言数据-R语言-图表-决策-Linux-Python

rvest包总结

2018-12-20  本文已影响2人  Liam_ml

阅读数:290

1、rvest介绍

网络爬虫是讲呈现在网页上以非结构格式(html)存储的数据转化为结构化数据的技术,该技术非常简单易用。

rvest是R用户使用率最多的爬虫包,它简洁的语法可以解决大部分的爬虫问题。

基本使用方法:

  1. 使用read_html读取网页;

  2. 通过CSS或Xpath获取所需要的节点并使用html_nodes读取节点内容;

  3. 结合stringr包对数据进行清理。

与Python的比较:

  1. R语法相对直观,规则更加灵活;

  2. 对于数据量不大的用户来数(小于百万级),R也能够非常自如地处理;

  3. 先学习R爬虫,等熟悉爬虫的原理之后,在过渡到Python是很容易的。

rvest的项目主页:https://cran.r-project.org/web/packages/rvest/index.html

2、API介绍

读取与提取:

乱码处理:

url <- "http://quote.eastmoney.com/stocklist.html"

x <- content(GET(url), "raw")

guess_encoding(x)

guess_encoding( )

用于探测网页的编码,遇到编码错误用这个解决

行为模拟:

3、函数详解

—3.1 读取与提取

——3.1.1 read_html

函数定义:read_html(x, encoding = "", ..., options = c("RECOVER", "NOERROR", "NOBLANKS"))

参数列表:

应用实例:

image

——3.1.2 html_nodes

函数定义:

html_node只输出一个元素。当给了一个节点列表时,html_node将返回一个长度相等的列表。

参数列表:

应用实例:

image image

——3.1.3 html_name

函数定义:html_name(x)

参数列表:x 完整的文档(XMLInternalDocument),标签列表(XMLNodeSet)或(XMLInternalElementNode)

应用实例:

image

——3.1.4 html_text

函数定义:html_text(x, trim = FALSE)

参数列表:

应用实例:

image

——3.1.5 html_attr

函数定义:

参数列表:

应用实例:

image

——3.1.6 html_table

函数定义:html_table(x, header = NA, trim = TRUE, fill = FALSE, dec = ".")

参数列表:

应用实例:

image

——3.1.7 html_form

函数定义:html_form(x)

参数列表:x 网页文档、节点集或单个节点

应用实例:

image

—3.2 乱码处理

——3.2.1 guess_encoding

函数定义:guess_encoding(x)

参数列表:x 字符型向量

应用实例:

image image

——3.2.2 repair_encoding

函数定义:repair_encoding(x, from = NULL)

参数列表:

应用实例:

image

—3.3 行为模拟

——3.3.1 set_values( ) 修改表单

函数定义:set_values(form, ...)

参数列表:

应用实例:

image

——3.3.2 submit_form

函数定义:submit_form(session, form, submit = NULL, ...)

参数列表:

应用实例:

image image

——3.3.3 html_session

函数定义:

参数列表:

方法:

一个session结构可以响应httr和html方法的操作:可以访问请求的属性,以及可以使用html_nodes访问html。

应用实例:

image

——3.3.4 jump_to

函数定义:jump_to(x, url, ...)

参数列表:

应用实例:

image

——3.3.5 follow_link

函数定义:follow_link(x, i, css, xpath, ...)

参数列表:

应用实例:

image

——3.3.6 session_history

函数定义:

参数列表:x 一个会话

应用实例:

image

4、补充知识

—4.1 包外API

  1. head( ) 检查数据

  2. as.numeric( ) 转化为数值型

  3. gsub( ) 移除" ", "\n", "\t"等

  4. as.factor( ) 转化为因子

  5. data.frame( ) 合并为数据框

  6. trycatch( ) 错误处理

  7. write.csv( ) 输出csv文件

  8. file.download( ) 下载网络文件

  9. read.table( ) 读取本地文件

  10. save( ) 保存变量到本地

  11. sapply( ) 向量化调用函数

  12. iconv( ) 转化编码格式

  13. rbind( ) 合并行

  14. paste( ) 连接字符串,多用来生成有规律的链接地址

—4.2 关联package

  1. stringr 字符串处理

  2. RSelenium 模拟网页操作,可抓取动态页面

  3. ggplot2 数据可视化

  4. magrittr 辅助rvest

—4.3 使用技巧

  1. 获取特定序位的html标签,用到了magrittr包里的extract2函数。下面两行代码都可以获得该网页中第一个<table>标签
  1. %>%是管道操作符,意思是把左边的操作结果作为参数传递给右边的命令

  2. 需要换页的同类型页面的地址一般会有规律,找到规律后就可生成一系列地址

  3. 定位所需内容时,有时html_nodes+stringr更方便,不使用html_text

  4. 若爬取内容过多,可使用边爬边存或者分批处理等

上一篇 下一篇

猜你喜欢

热点阅读