在数据采集和分析中,爬取网页中的表格数据是一个常见任务。html_table2
是一个非常实用的 R 包,它可以帮助我们将 HTML 表格快速解析为数据框。然而,在实际应用中,数据清洗和转换往往是不可避免的。本文将分享如何高效地将 html_table2
的结果转化为更适合分析的 tibble
格式,并展示一个以采集汽车之家(https://www.autohome.com.cn/)汽车品牌和价格信息为例的完整实践。
html_table2
是 R 语言中解析 HTML 表格的主要工具之一,可以轻松从 HTML 文档中提取表格数据。
tibble
是 tidyverse
生态系统中的数据结构,类似于数据框,但提供了更优的打印格式、更强的可读性以及便捷的数据处理特性。
通过结合这两者,我们可以在数据采集后,直接进入高效的分析流程。
tibble
显示时更加紧凑易读。tidyverse
包对 tibble
的支持更佳。tibble
提供了更强的列操作功能。以下是将 html_table2
结果转化为 tibble
的最佳实践:
library(rvest)
library(dplyr)
library(tidyr)
以汽车之家为例,假设我们需要采集汽车品牌和价格信息。由于该网站对爬虫有限制,我们需要使用代理 IP 来实现。
以下是实现代理 IP 技术的代码示例:
# 设置代理参数 16yun爬虫代理
proxy_url <- "http://proxy.16yun.cn"
proxy_port <- "12345"
proxy_user <- "your_username"
proxy_password <- "your_password"
# 构建代理 URL
proxy <- paste0("http://", proxy_user, ":", proxy_password, "@", proxy_url, ":", proxy_port)
# 爬取数据
url <- "https://www.autohome.com.cn/"
page <- read_html(url, options = list(proxy = proxy))
假设我们需要提取某个包含汽车品牌和价格的表格。
# 提取表格
table <- page %>% html_node("table") %>% html_table2()
# 转换为 tibble
table_tibble <- as_tibble(table)
# 打印结果
print(table_tibble)
表格数据常常需要进一步清理。例如:
# 数据清洗
cleaned_data <- table_tibble %>%
rename(brand = 1, price = 2) %>% # 重命名列
mutate(price = as.numeric(gsub("[^0-9.]", "", price))) # 提取价格中的数值
# 查看清洗后的数据
head(cleaned_data)
以下是完整的代码实现:
library(rvest)
library(dplyr)
library(tidyr)
# 设置代理参数 16yun爬虫代理
proxy_url <- "http://proxy.16yun.cn"
proxy_port <- "12345"
proxy_user <- "your_username"
proxy_password <- "your_password"
proxy <- paste0("http://", proxy_user, ":", proxy_password, "@", proxy_url, ":", proxy_port)
# 目标网址
url <- "https://www.autohome.com.cn/"
# 爬取页面
page <- read_html(url, options = list(proxy = proxy))
# 提取表格
table <- page %>% html_node("table") %>% html_table2()
# 转换为 tibble
table_tibble <- as_tibble(table)
# 数据清洗
cleaned_data <- table_tibble %>%
rename(brand = 1, price = 2) %>%
mutate(price = as.numeric(gsub("[^0-9.]", "", price)))
# 打印清洗后的数据
print(cleaned_data)
通过本文,我们学习了如何使用 html_table2
提取 HTML 表格,并高效地将其转化为 tibble
以便于后续分析。同时,我们结合代理 IP 技术实现了对汽车之家数据的采集。希望这些方法能为您的数据采集与分析提供帮助!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。