rvest包文档简易翻译

rvest是一个用于网页抓取的R语言包,提供了一系列函数如guess_encoding、html_nodes、html_table等,用于HTML编码调整、节点选择、表格解析等。它支持模拟浏览器会话、表单提交和历史记录导航,方便进行网页数据提取。
摘要由CSDN通过智能技术生成

rvest

网页爬虫

encoding调整字符编码

描述:
这些函数能帮助你对那些有错误编码声明的
网页进行调整.你可以使用guess_encoding 得到正确编码, 或者用repair_encoding来休整字符型向量.
使用:
guess_encoding(x)
repair_encoding(x, from = NULL)
参数:

参数说明
x字符型向量
from字符的实际编码

stringi:
函数封装自stringi包, 需要先安装.
例子:

# This page claims to be in iso-8859-1:
url <- 'http://www.elections.ca/content.aspx?section=res&dir=cir/list&document=index&lang=e#list'
elections <- html(url)
x <- elections %>% html_nodes("table") %>% .[[2]] %>% html_table() %>% .$TO
# But something looks wrong:
x
# It's acutally UTF-8!
guess_encoding(x)
# We can repair this vector:
repair_encoding(x)
# But it's better to start from scratch with correctly encoded file
elections <- html(url, encoding = "UTF-8")
elections %>% html_nodes("table") %>% .[[2]] %>% html_table() %>% .$TO

提出TO列的值

[1] "Bonavista–Gander–Grand Falls–Windsor" "St. John's East"                     
[3] "St. John's South–Mount Pearl" 

提出FROM列的值

> elections %>% html_nodes("table") %>% .[[2]] %>% html_table() %>% .$FROM
[1] "Bonavista–Exploits" "St. John's North"   "St. John's South"  

google_form从给定的id中获取谷歌表格

例子

google_form("1M9B8DsYNFyDjpwSK6ur_bZf8Rv_04ma3rmaaBiveoUI")

html解析HTML网页

函数

html(x, ..., encoding = NULL)

参数

参数说明
x可以是url,本地路径,包含html的字符串,或者来自httr的请求如果x是URL参数就传递给GET()
encoding文档的编码形式,查看iconvlist()有完整列表,他如果不能正确确定encoding方式可以尝试stri_enc_detect

例子

# From a url:
google <- html("http://google.com")
google %>% xml_structure()
google %>% html_nodes("p")
# From a string: (minimal html 5 document)
# http://www.brucelawson.co.uk/2010/a-minimal-html5-document/
minimal <- html("<!doctype html>
<meta charset=utf-8>
<title>blah</title>
<p>I'm the content")
minimal
# From an httr request
google2 <- html(httr::GET("http://google.com"))

html_form ?

例子

html_form(html("https://hadley.wufoo.com/forms/libraryrequire-quiz/"))
html_form(html("https://hadley.wufoo.com/forms/r-journal-submission/"))
box_office <- html("http://www.boxofficemojo.com/movies/?id=ateam.htm")
box_office %>% html_node("form") %>% html_form()

html_nodes收集HTML中的节点

描述:
使用XPath和css更简单的分片提取HTML, 结合selectorgadget他能够简单地找到应该使用哪个css selector。如果没用用过CSS selector, 参见github的教程
函数:
html_nodes(x, css, xpath)
html_node(x, css, xpath)
参数:

参数说明
x完整的文档(XMLInternalDocument),tags列表(XMLNodeSet),单一的tag(XMLInternalElementNode)
css,xpath要收集的节点。css和xpath 两种selector方式可选

html_node vs html_nodes 区别:
html_node类似[[只输出一个元素。当给了一个节点列表时,html_node将返回一个长度相等的列表。

例子:

# CSS selectors ----------------------------------------------
ateam <- html("http://www.boxofficemojo.com/movies/?id=ateam.htm")
html_nodes(ateam, "center")
html_nodes(ateam, "center font")
html_nodes(ateam, "center font b")
# But html_node is best used in conjunction with %>% from magrittr 
# You can chain subsetting:
ateam %>% html_nodes("center") %>% html_nodes("td")
ateam %>% html_nodes("center") %>% html_nodes("font")
# When applied to a list of nodes, html_nodes() collapses output
# html_node() selects a single element from each
td <- ateam %>% html_nodes("center") %>% html_nodes("td")
td %>% html_nodes("font")
td %>% html_node("font")
# To pick out an element at specified position, use magrittr::extract2
# which is an alias for [[
library(magrittr)
ateam %>% html_nodes("table") %>% extract2(1) %>% html_nodes("img")
ateam %>% html_nodes("table") %>% `[[`(1) %>% html_nodes("img")
# Find all images contained in the first two tables
ateam %>% html_nodes("table") %>% `[`(1:2) %>% html_nodes("img")
ateam %>% html_nodes("table") %>% extract(1:2) %>% html_nodes("img")
# XPath selectors ---------------------------------------------
# chaining with XPath is a little trickier - you may need to vary
# the prefix you're using - // always selects from the root noot
# regardless of where you currently are in the doc
ateam %>%
html_nodes(xpath = "//center//font//b") %>%
html_nodes(xpath = "//b")

html_session() Simulate a session in an html browser

函数:
html_session(url, …)
is.session(x)
参数:

参数说明
url开始session的地址
。。。这整个session的httr配置参数
x欲测试是否是session的object

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

例子:

# http://stackoverflow.com/questions/15853204
s <- html_session("http://had.co.nz")
s %>% jump_to("thesis") %>% jump_to("/") %>% session_history()
s %>% jump_to("thesis") %>% back() %>% session_history()
s %>% follow_link(css = "p a")

html_table 解析html中的表为数据框

函数:
html_table(x, header = NA, trim = TRUE, fill = FALSE, dec = “.”)
参数:

参数说明
x一个节点,节点集合或文件
header第一列作为表头?如果是NA,并且表包含标签,就是用第一行作为表头
trim删除空白?
fill如果TRUE,自动填充缺失为NA
dec字符转换为10进制

假设前提:
- 每个单元格无跨行
- 第一行是header

例子:

tdist <- html("http://en.wikipedia.org/wiki/Student%27s_t-distribution")
tdist %>%
html_node("table.infobox") %>%
html_table(header = FALSE)
births <- html("http://www.ssa.gov/oact/babynames/numberUSbirths.html")
html_table(html_nodes(births, "table")[[2]])
# If the table is badly formed, and has different number of rows in
# each column use fill = TRUE. Here's it's due to incorrect colspan
# specification.
skiing <- html("http://data.fis-ski.com/dynamic/results.html?sector=CC&raceid=22395")
skiing %>%
html_table(fill = TRUE)

html_text 从html抽取属性、文本和标签

函数:
html_text(x, …)
html_tag(x)
html_children(x)
html_attrs(x)
html_attr(x, name, default = NA_character_)
参数:

参数说明
x完整的文档(XMLInternalDocument),标签列表(XMLNodeSet)或(XMLInternalElementNode)
其他参数传递给xmlValue().最有用的参数是trim = TRUE,他可以移除空白
name提取的属性名
default若任何一个节点的属性不存在则用这里设置的string参数

例子:

movie <- html("http://www.imdb.com/title/tt1490017/")
cast <- html_nodes(movie, "#titleCast span.itemprop")
html_text(cast)
html_tag(cast)
html_attrs(cast)
html_attr(cast, "class")
html_attr(cast, "itemprop")
basic <- html("<p class='a'><b>Bold text</b></p>")
p <- html_node(basic, "p")
p
# Can subset with numbers to extract children
p[[1]]
# Use html_attr to get attributes
html_attr(p, "class")

jump_to 指向到新链接

jump_to() 得到相对或绝对链接; follow_link() 通过表达式找到当前页面下的链接
使用:
jump_to(x, url, …)
follow_link(x, i, css, xpath, …)
参数:

参数说明
xA session
url可以使相对或绝对的url
httr配置参数
i 整形 选取第i个链接 2. 字符串 找到第一个包含此string的链接

例子:

s <- html_session("http://had.co.nz")
s %>% jump_to("thesis/") # 跳转到/thesis
s %>% follow_link("vita") # 找到含有vita的链接跳转
s %>% follow_link(3)# 找到第三个的链接跳转
s %>% follow_link("vita")

pluck 提取元素所属列表的位置

函数:
pluck(x, i, type)
参数:

参数说明
x列表
i字符串或整形
type输出形式

scrape scrape

session_history 历史记录导航工具

函数:
session_history(x)
back(x)
参数x : A session

set_values 设置表单中的值

函数:
set_values(form, …)
参数:

参数说明
form欲修改的表格
名称-值对

例子:

search <- html_form(html("https://www.google.com"))[[1]]
set_values(search, q = "My little pony")
set_values(search, hl = "fr")
## Not run: set_values(search, btnI = "blah")

submit_form 上传

函数:
submit_form(session, form, submit = NULL, …)
参数:

参数说明
sessionSession to submit form to.
formSession to submit form to.
submit上传使用的button名,如果没有设置,默认为form第一个上传的button
GET()和POST()的附加参数

例子:

test <- google_form("1M9B8DsYNFyDjpwSK6ur_bZf8Rv_04ma3rmaaBiveoUI")
f0 <- html_form(test)[[1]]
f1 <- set_values(f0, entry.564397473 = "abc")

xml

与HTML操作相同. 目前将XML解码成HTML.
函数:
xml(x, …, encoding = NULL)
xml_tag(x)
xml_attr(x, name, default = NA_character_)
xml_attrs(x)
xml_node(x, css, xpath)
xml_nodes(x, css, xpath)
xml_text(x, …)
xml_children(x)
参数:

参数说明
x可以是url,本地路径,包含html的字符串,或httr请求的结果
如果x是URl,就是GET()的附加参数
name提取出的属性名
default当属性名不存在,就用default作为属性名

例子:

search <- xml("http://stackoverflow.com/feeds")
entries <- search %>% xml_nodes("entry")
entries[[1]] %>% xml_structure()
entries %>% xml_node("author name") %>% xml_text()
entries %>% lapply(. %>% xml_nodes("category") %>% xml_attr("term"))# 提取category下的term值,lapply注意学习!

entries %>% lapply(. %>% xml_nodes(“category”) %>% xml_attr(“term”))# 提取category下的term值,lapply注意学习!

xml_structure 显示结构

函数:
xml_structure(x, indent = 0)
参数:

x
indent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值