使用 rvest 包快速抓取网页数据:从入门到精通

简介: 本文介绍了如何使用 R 语言中的 `rvest` 包结合代理 IP 技术,快速抓取新闻网站的数据。以澎湃新闻为例,详细展示了如何配置代理、解析网页结构、提取新闻标题和摘要,并将数据保存为 CSV 文件。通过本教程,读者可以掌握 `rvest` 包的使用方法,提高爬虫抓取效率。

爬虫代理加强版

介绍

随着大数据和数据科学的迅速发展,互联网数据的抓取已经成为重要的信息获取手段之一。网页抓取(Web Scraping)可以帮助我们自动化地从网页中提取有价值的数据,应用广泛,包括新闻热点分析、金融数据采集等。在本篇文章中,我们将介绍如何使用 R 语言中的 rvest 包,结合代理 IP 技术,快速抓取新闻网站的数据。我们以 澎湃新闻(The Paper,网址:https://www.thepaper.cn)为例,展示如何抓取该网站的新闻热点,包括标题和摘要,并将其保存为文件。

澎湃新闻(The Paper)是中国领先的新闻网站之一,致力于为读者提供深度报道、时事新闻以及各类热点话题的最新动态。作为国内重要的媒体平台之一,澎湃新闻广泛涉及政治、经济、文化、科技等多个领域,并且具有较高的新闻质量和社会影响力。由于其内容广泛且实时更新,抓取其新闻热点成为数据分析与研究的一个常见应用场景。

本文将通过一个简单的示例,帮助读者从入门到精通地掌握 rvest 包的使用,并结合代理 IP、Cookie 和 User-Agent 的设置,提高爬虫抓取效率。

技术分析

1. 工具简介

rvest 包是 R 语言中专为网页抓取设计的工具,简洁高效,能够处理 HTML 页面内容的解析、数据提取等任务。通过 rvest,我们可以轻松地获取网页中的各种信息,例如文章标题、作者、内容、图片链接等。与其他网页抓取工具相比,rvest 更加适合 R 用户,提供了一系列直观的 API。

2. 使用代理 IP 技术

在实际抓取过程中,尤其是高频率抓取时,网站往往会对频繁访问的 IP 进行封锁或限制。为了规避此类问题,我们可以通过使用代理 IP 来隐匿真实 IP,从而避免被反爬虫机制检测到。本文以爬虫代理提供的代理IP服务为例,演示如何配置代理,保证爬虫能稳定抓取目标网页。

3. 目标分析

我们目标是抓取澎湃新闻(The Paper)网站的热点新闻,包括文章的标题和摘要。抓取的流程如下:

  • 配置代理 IP、Cookie 和 User-Agent。
  • 使用 rvest 解析网页结构。
  • 提取新闻文章的标题和摘要。
  • 将抓取的数据保存到本地 CSV 文件中。

实现代码

以下是完整的实现代码,包含详细的中文注释,帮助读者理解每个关键步骤。

# 加载必要的 R 包
library(rvest)
library(httr)

# 设置代理 IP 配置(以亿牛云代理为例 www.16yun.cn)
proxy_url <- "http://proxy.16yun.cn:代理端口"
proxy_user <- "你的用户名"
proxy_password <- "你的密码"

# 设置 User-Agent 和 Cookie
headers <- add_headers(
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.89 Safari/537.36",
  `Cookie` = "你的Cookie字符串"
)

# 创建一个包含代理的会话对象
proxy_config <- use_proxy(url = proxy_url, port = 80, username = proxy_user, password = proxy_password)

# 目标网页 URL,指向澎湃新闻热点页面
news_url <- "https://www.thepaper.cn/newsDetail_forward_1234567"  # 需要替换为实际新闻页面链接

# 抓取数据的主要函数
scrape_news <- function(url) {
   
  # 获取网页内容
  response <- GET(url, proxy_config, headers)

  # 检查响应状态
  if (http_status(response)$category != "Success") {
   
    stop("无法访问目标网页,请检查代理或网络配置。")
  }

  # 解析 HTML 内容
  html <- content(response, "text") %>% read_html()

  # 提取标题和摘要
  titles <- html %>% html_nodes(".news_title") %>% html_text(trim = TRUE)
  summaries <- html %>% html_nodes(".news_summary") %>% html_text(trim = TRUE)

  # 合并为数据框
  news_data <- data.frame(标题 = titles, 摘要 = summaries, stringsAsFactors = FALSE)

  return(news_data)
}

# 抓取新闻数据
news_data <- scrape_news(news_url)

# 保存数据到文件
output_file <- "news_data.csv"
write.csv(news_data, output_file, row.names = FALSE, fileEncoding = "UTF-8")

# 提示用户保存成功
cat("新闻数据已成功保存到文件:", output_file, "\n")

代码说明

  1. 代理 IP 的使用:通过 use_proxy 函数设置代理,使爬虫请求通过指定的代理服务器发送,从而避免被网站封锁 IP。
  2. User-Agent 和 Cookie 设置:通过 add_headers 函数设置 HTTP 请求头中的 User-AgentCookie,模拟真实浏览器的访问行为,有效绕过一些简单的反爬虫策略。
  3. 新闻标题和摘要提取:使用 html_nodeshtml_text 提取页面中的新闻标题和摘要。根据澎湃新闻网站的实际 HTML 结构,".news_title"".news_summary" 是新闻标题和摘要对应的 CSS 选择器。
  4. 数据存储:抓取的数据以 CSV 格式存储,方便后续查看和处理。

结论

使用 rvest 包进行网页抓取是一个高效且直观的方法,尤其适合 R 用户。通过结合代理 IP、Cookie 和 User-Agent 的设置,可以有效绕过反爬虫机制,保证爬虫的稳定性与高效性。本文以澎湃新闻为例,展示了如何抓取新闻热点数据,包括如何处理代理 IP、如何解析 HTML 页面并提取目标数据,最后将数据存储为文件。通过本篇教程,读者可以快速掌握使用 rvest 包抓取网页数据的基本技巧,并在实际项目中应用这些知识。

相关文章
|
数据采集 JSON 算法
Python爬虫——模拟登录
Python爬虫——模拟登录
1312 3
|
机器学习/深度学习 Linux vr&ar
ARIMA差分自回归移动平均模型
ARIMA是**差分自回归移动平均模型**的引文缩写,其中AR表示的是自回归模型,MA表示的是移动平均模型,I表示的是差分。一般写成ARIMA(p,d,q),p是自回归阶数,q是移动平均阶数,d表示差分的次数。
2990 0
ARIMA差分自回归移动平均模型
|
数据采集 JSON 数据挖掘
如何利用Python实现高效数据清洗
数据清洗是数据分析过程中不可避免的一步。在大规模数据处理任务中,手动数据清洗会耗费大量时间和资源。本文介绍了如何使用Python编写脚本来自动化数据清洗,以提高数据分析的效率。
550 3
|
7月前
|
定位技术 API 网络安全
2026年网站建设需要多少钱?
网站建设费用从千元到数十万元不等,主要取决于开发方式、功能复杂度及设计需求。模板站成本最低,定制开发适中,复杂系统费用最高。建议明确核心需求,选择匹配方案,并关注长期维护成本与隐性费用。
3783 8
|
7月前
|
弹性计算 安全 开发者
新注册的阿里云账号无法购买38元、99元、199元云服务器是怎么回事?原因及解决方案参考
阿里云目前有几款价格非常实惠的云服务器,但是有部分用户新注的账号无法购买特价云服务器,看到的价格要高很多,或提示无法参与抢购,无法购买的原因包括账号非新、同人账号、已领优惠、存在未支付订单或账号异常等。本文为大家分析具体原因及解决方案。
|
机器学习/深度学习 人工智能 算法
Stable Virtual Camera:2D秒变3D电影!Stability AI黑科技解锁无限运镜,自定义轨迹一键生成
Stable Virtual Camera 是 Stability AI 推出的 AI 模型,能够将 2D 图像转换为具有真实深度和透视感的 3D 视频,支持自定义相机轨迹和多种动态路径,生成高质量且时间平滑的视频。
1214 0
Stable Virtual Camera:2D秒变3D电影!Stability AI黑科技解锁无限运镜,自定义轨迹一键生成
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)
YOLOv5改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)
597 2
|
机器学习/深度学习 存储 人工智能
Attention优化重大突破!显存减半效率倍增
本文探讨了Transformer中Attention机制的演变与优化。从2017年Transformer提出以来,各种改进如MQA、GQA、MLA等层出不穷,旨在降低计算复杂度和显存消耗,同时保持模型性能。文章首先介绍了Attention的基本原理,通过QKV矩阵运算实现序列建模。接着分析了优化方法:kv caching将计算复杂度从O(n^3)降至O(n^2),但带来显存压力;MQA、GQA等通过减少或压缩K/V降低显存需求;而NSV、MoBA等稀疏化研究进一步缓解长序列下的计算与存储负担,推动大模型向更长上下文扩展。
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
2031 1
Linux 服务器下载百度网盘文件
|
机器学习/深度学习 Serverless 定位技术
深入理解多重共线性:基本原理、影响、检验与修正策略
本文将深入探讨多重共线性的本质,阐述其重要性,并提供有效处理多重共线性的方法,同时避免数据科学家常犯的陷阱。
1609 3