热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R爬虫Rvest

Rvest用R轻松抓网页数据课程背景:本课程需要一点R语言基础,以及了解一点CSS选择器的知识,不过没有相关的知识同样也不需要担心,所有的背景知识都很简单学完之后能够做什么:通过本
Rvest用R轻松抓网页数据

课程背景:本课程需要一点R语言基础,以及了解一点CSS选择器的知识,不过没有相关的知识同样也不需要担心,所有的背景知识都很简单

学完之后能够做什么:通过本课程知识的讲解,加上案例的分析,同学可以学会使用R语言快速的爬取网络上的数据

目录
  • 什么是网络爬虫

  • 为什么要爬取数据

  • 准备工作

  • 如何使用Rvest爬取网页

  • Rvest简介

  • Rvest API 介绍

  • Rvest API 详解

  • 补充知识

  • 完整案例

什么是网络爬虫

网络爬虫是将呈现在网页上以非结构格式(html)存储的数据转化为结构化数据的技术

非结构化的数据通过查看网页的源代码就可以看到:

《R 爬虫-Rvest》 image.png

结构化的数据通常就是,由行和列组成的数据,行代表观测,列代表特征或变量:

《R 爬虫-Rvest》 image.jpeg

结构化数据

准备工作

下载相关的包

install.packages("rvest")
install.packages("tidyverse")
library(rvest)
library(tidyverse)

安装 Google Chrome 浏览器
要爬取网页上的数据,首先要知道的是,网页上的数据处于网页中的什么位置。那么如何去描述网页上的位置,可以通过 Xpath 和 selector

举一个例子:

《R 爬虫-Rvest》 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 详解
  1. 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