作者:mobiledu2502886985 | 来源:互联网 | 2023-09-10 23:32
Rvest用R轻松抓网页数据课程背景:本课程需要一点R语言基础,以及了解一点CSS选择器的知识,不过没有相关的知识同样也不需要担心,所有的背景知识都很简单学完之后能够做什么:通过本
Rvest用R轻松抓网页数据
课程背景:本课程需要一点R语言基础,以及了解一点CSS选择器的知识,不过没有相关的知识同样也不需要担心,所有的背景知识都很简单
学完之后能够做什么:通过本课程知识的讲解,加上案例的分析,同学可以学会使用R语言快速的爬取网络上的数据
目录
什么是网络爬虫
为什么要爬取数据
准备工作
如何使用Rvest爬取网页
Rvest简介
Rvest API 介绍
Rvest API 详解
补充知识
完整案例
什么是网络爬虫
网络爬虫是将呈现在网页上以非结构格式(html)存储的数据转化为结构化数据的技术
非结构化的数据通过查看网页的源代码就可以看到:
image.png
结构化的数据通常就是,由行和列组成的数据,行代表观测,列代表特征或变量:
image.jpeg
结构化数据
准备工作
下载相关的包
install.packages("rvest")
install.packages("tidyverse")
library(rvest)
library(tidyverse)
安装 Google Chrome 浏览器
要爬取网页上的数据,首先要知道的是,网页上的数据处于网页中的什么位置。那么如何去描述网页上的位置,可以通过 Xpath 和 selector
举一个例子:
image.png
CSS选择器 这个标题,在网页中的位置描述就是:
selector: #main > h2 > font > font
Xpath: //*[@id="main"]/h2/font/font
这个位置描述本质上可以通过观察网页的结构得出来,但是使用Google Chrome能够快速的获取数据的位置
Rvest 简介
rvest是R用户使用率最多的爬虫包,它简洁的语法可以解决大部分的爬虫问题。
基本使用方法:
- 使用read_html读取网页;
- 通过CSS或Xpath获取所需要的节点并使用html_nodes读取节点内容;
- 结合stringr包对数据进行清理。
Rvest API介绍
读取与提取:
- read_html() 读取html文档的函数
- html_nodes() 选择提取文档中指定元素的部分
- html_name() 提取标签名称;
- html_text() 提取标签内的文本;
- html_attr() 提取指定属性的内容;
- html_attrs() 提取所有的属性名称及其内容;
- html_table() 解析网页数据表的数据到R的数据框中;
- html_form() 提取表单。
乱码处理:
guess_encoding() 用来探测文档的编码,方便我们在读入html文档时设置正确的编码格式
repair_encoding() 用来修复html文档读入后的乱码问题
行为模拟:
set_values() 修改表单
submit_form() 提交表单
html_session() 模拟HTML浏览器会话
jump_to() 得到相对或绝对链接
follow_link() 通过表达式找到当前页面下的链接
session_history() 历史记录导航工具
Rvest API 详解
- read_html 参数:
x 可以是url,本地路径,包含html的字符串,或者来自httr的请求如果x是URL参数就传递给GET()
encoding 文档的编码形式,查看iconvlist()有完整列表,他如果不能正确确定encoding方式可以尝试stri_enc_detect 使用这个函数来获取html数据
require(rvest)
HTML <- read_html(x = "https://hz.fang.anjuke.com/?from=navigation")
HTML
## {xml_document}
##
## [1] \n## [2] \n