将html_table2结果转化为tibble的最佳实践

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了如何使用 `html_table2` 和 `tibble` 进行网页表格数据的采集和处理。通过结合代理 IP 技术,展示了如何高效地从汽车之家网站(https://www.autohome.com.cn/)抓取汽车品牌和价格信息,并将其转化为适合分析的 `tibble` 格式。文章详细讲解了数据清洗和转换的最佳实践,提供了完整的代码示例。

爬虫代理加强版

在数据采集和分析中,爬取网页中的表格数据是一个常见任务。html_table2 是一个非常实用的 R 包,它可以帮助我们将 HTML 表格快速解析为数据框。然而,在实际应用中,数据清洗和转换往往是不可避免的。本文将分享如何高效地将 html_table2 的结果转化为更适合分析的 tibble 格式,并展示一个以采集汽车之家(https://www.autohome.com.cn/)汽车品牌和价格信息为例的完整实践。

1. 什么是 html_table2 和 tibble?

html_table2

html_table2 是 R 语言中解析 HTML 表格的主要工具之一,可以轻松从 HTML 文档中提取表格数据。

tibble

tibbletidyverse 生态系统中的数据结构,类似于数据框,但提供了更优的打印格式、更强的可读性以及便捷的数据处理特性。

通过结合这两者,我们可以在数据采集后,直接进入高效的分析流程。

2. 转化为 tibble 的原因

  • 可读性tibble 显示时更加紧凑易读。
  • 兼容性:许多 tidyverse 包对 tibble 的支持更佳。
  • 操作性tibble 提供了更强的列操作功能。

3. 最佳实践步骤

以下是将 html_table2 结果转化为 tibble 的最佳实践:

3.1 加载必要的 R 包

library(rvest)
library(dplyr)
library(tidyr)

3.2 爬取目标页面

以汽车之家为例,假设我们需要采集汽车品牌和价格信息。由于该网站对爬虫有限制,我们需要使用代理 IP 来实现。

3.3 使用代理 IP

以下是实现代理 IP 技术的代码示例:

# 设置代理参数 亿牛云爬虫代理 www.16yun.cn
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))

3.4 提取表格数据并转化为 tibble

假设我们需要提取某个包含汽车品牌和价格的表格。

# 提取表格
table <- page %>% html_node("table") %>% html_table2()

# 转换为 tibble
table_tibble <- as_tibble(table)

# 打印结果
print(table_tibble)

3.5 数据清洗与整理

表格数据常常需要进一步清理。例如:

# 数据清洗
cleaned_data <- table_tibble %>%
  rename(brand = 1, price = 2) %>%  # 重命名列
  mutate(price = as.numeric(gsub("[^0-9.]", "", price)))  # 提取价格中的数值

# 查看清洗后的数据
head(cleaned_data)

4. 案例分析:采集汽车之家数据

以下是完整的代码实现:

library(rvest)
library(dplyr)
library(tidyr)

# 设置代理参数 亿牛云爬虫代理 www.16yun.cn
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)

5. 注意事项

  1. 合法合规:遵守网站的 robots.txt 规则和相关法律法规。
  2. 稳定性:爬虫代理每次请求自动转发,通过不同IP进行请求。
  3. 抗屏蔽:使用延迟、爬虫代理等技术减少爬虫被屏蔽的概率。
  4. 数据质量:对爬取的数据进行验证和清洗。

6. 总结

通过本文,我们学习了如何使用 html_table2 提取 HTML 表格,并高效地将其转化为 tibble 以便于后续分析。同时,我们结合代理 IP 技术实现了对汽车之家数据的采集。希望这些方法能为您的数据采集与分析提供帮助!

相关文章
|
9月前
|
移动开发 缓存 前端开发
【专栏:HTML与CSS实践篇】网页性能优化:CSS与HTML的最佳实践
【4月更文挑战第30天】本文探讨了优化CSS和HTML以提升网页性能的最佳实践。HTML优化包括:精简结构、压缩代码、异步加载脚本和利用缓存。CSS优化则涉及:精简代码、合并文件、使用CSS Sprite、善用CSS3属性、避免@import及响应式设计。这些方法能加快加载速度,改善用户体验。
109 6
|
数据采集 JavaScript 前端开发
Node.js 中的 HTML 解析:技巧和最佳实践
在 Web 开发中,解析 HTML 是一个常见的任务,特别是当我们需要从网页中提取数据或操作 DOM 时。掌握 Node.js 中解析 HTML 的各种方式,可以大大提高我们提取和处理网页数据的效率。本文将介绍如何在 Node.js 中解析 HTML。
|
移动开发 JavaScript 数据库
|
存储 Web App开发 移动开发
《HTML5 2D游戏编程核心技术》——第1章,第1.2节HTML5游戏开发最佳实践
本节书摘来自华章出版社《HTML5 2D游戏编程核心技术》一书中的第1章,第1.2节HTML5游戏开发最佳实践,作者[美] 戴维·吉尔里,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 HTML5游戏开发最佳实践 我们将在本书中持续地讨论一些关于游戏开发的最佳实践,首先介绍7个与HTML5有关的实践。
2499 0
|
JavaScript 前端开发 Go
前端代码标准最佳实践:HTML篇
Web前端代码中,HTML是根本,CSS和JavaScript也是围绕着既有的HTML结构来构建,所以良好的HTML代码结构,除了提高了HTML代码的可读性,可维护性和执行性能之外,也可以让相对应的CSS和JavaScript代码更好的构建。
1352 0