使用 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 包抓取网页数据的基本技巧,并在实际项目中应用这些知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491347.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 DDD 中优雅的发送 Kafka 消息

前言 1:host 映射 下载 SwitchHost 配置一个映射地址。点击 添加一个本地环境&#xff0c;之后配置你的 IP kafka 这样就能找这个地址了。IP 为你本地的IP&#xff0c;如果是云服务器就是公网IP地址 使用docker-compose.yml进行一键部署安装 version: 3.0 # docker-compose …

c#上班,上学,交通方式接口

using System;namespace INTERFACE {abstract class Person{public string Name { get; set; }public int Age { get; set; }public virtual void ShowInfo(){Console.WriteLine($"Name: {Name}, Age: {Age}");}}// 接口 IWorkinterface IWork{void GotoCompany();}/…

Halcon 直连相机

一、相机类别 1、大恒示例 DahengCAM 使用大华相机,待补充... 2、大华例程 GigEVision 2.1 关键算子 1、查询指定图像采集接口信息。 info_framegrabber (GigEVision, info_boards, Information, ValueList) 获取结果 unique_name:302fac01cd50_MachineVision_MVA5B57MG20…

RPC 服务与 gRPC 的入门案例

RPC 协议 RPC&#xff08;Remote Procedure Call Protocol&#xff09;即远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务的协议&#xff0c;允许一个计算机程序可以像调用本地服务一样调用远程服务 。 RPC的主要作用是不同的服务间方法调用就像本地…

机器学习-正则化技术

文章目录 拟合正则化正则项L1 正则化&#xff08;Lasso&#xff09;L2 正则化&#xff08;Ridge&#xff09; 多元线性回归的正则化回归形式代码 拟合 过拟合&#xff1a;参数&#xff08;特征&#xff09;过多&#xff08;理解为考虑很多因素)或者说过多专注于原来的训练数据…

数据可视化-2. 条形图

目录 1. 条形图适用场景分析 1.1 比较不同类别的数据 1.2 展示数据分布 1.3 强调特定数据点 1.4 展示时间序列数据的对比 1.5 数据可视化教育 1.6 特定领域的应用 2. 条形图局限性 3. 条形图图代码实现 3.1 Python 源代码 3.2 条形图效果&#xff08;网页显示&#…

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下&#xff1a;https://web.mit.edu/kerberos…

SpringBoot+IDEA工具框架快捷键+注解备注

快捷键 ctrlr 搜索替换 ctrlshiftr 全局搜索和替换 altfninsert 自行补全函数和构造函数等 ctrlaltt 可以尝试添加东西 可以加try catch ctrlshiftt 生成接口对应的测试函数 ctrlh 可以查看当前类的一个继承和实现关系 大写CD回车 ide会自动生成cdata区的标签 x…

AI前沿分析:ChatGPT搜索上线,Google搜索地位能否守住?

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 引言&#xff1a;AI与搜索领域的激烈博弈一、ChatGPT搜索的优势是什么&#xff1f;1. 实时信息获取&#xf…

ScottPlot学习的常用笔记

ScottPlot学习的常用笔记 写在前面版本的选择第一个障碍&#xff1a;版本问题。 ScottPlot4.0的官方网站与示例官方起始页cookbook5.0Demo4.1 demo以4.1为例&#xff0c;解压和运行如下&#xff1a; 下载源代码和编译先说结论&#xff1a; 写在前面 之前调研的TraceCompass&am…

客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,

预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式&#xff0c;如pdf 文件目录如图所示&#xff1a; 代码如下 <template><div class"preview-wrap" ref&…

luckysheet与superslide冲突解决

[现象]控制台报错、界面无法操作 $是jquery。查看源码&#xff0c;发现mousewheel方法来自插件mousewheel&#xff0c;luckysheet初始应该会将mousewheel挂载在jquery上。 在控制台打印jquery取dom及其方法&#xff0c;结果如下&#xff1a; 不存在mousewheel方法&#xff0c…

MongoDB(上)

MongoDB 基础 MongoDB 是什么&#xff1f; MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统&#xff0c;由 C 编写的。MongoDB 提供了 面向文档 的存储方式&#xff0c;操作起来比较简单和容易&#xff0c;支持“无模式”的数据建模&#xff0c;可以存储比较复杂…

搭建Tomcat(四)---Servlet容器

目录 引入 Servlet容器 一、优化MyTomcat ①先将MyTomcat的main函数搬过来&#xff1a; ②将getClass()函数搬过来 ③创建容器 ④连接ServletConfigMapping和MyTomcat 连接&#xff1a; ⑤完整的ServletConfigMapping和MyTomcat方法&#xff1a; a.ServletConfigMappin…

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…

网络安全-------防止被抓包

1.Ios应用网络安全之https 安全套接字层 (Secure Socket Layer, SSL) 是用来实现互联网安全通信的最普遍的标准。Web 应用程序使用 HTTPS&#xff08;基于 SSL 的 HTTP&#xff09;&#xff0c;HTTPS 使用数字证书来确保在服务器和客户端之间进行安全、加密的通信。在 SSL 连接…

WebSocket 与 Server-Sent Events (SSE) 的对比与应用

目录 ✨WebSocket&#xff1a;全双工通信的利器&#x1f4cc;什么是 WebSocket&#xff1f;&#x1f4cc;WebSocket 的特点&#x1f4cc;WebSocket 的优点&#x1f4cc;WebSocket 的缺点&#x1f4cc;WebSocket 的适用场景 ✨Server-Sent Events (SSE)&#xff1a;单向推送的轻…

CAD c# 生成略缩图预览

代码如下&#xff1a; using (Transaction tr currentdb.TransactionManager.StartTransaction()){//当前数据库开启事务using (Database tempdb new Database(false, true)) //创建临时数据库(两个参数&#xff1a;是否创建符号表&#xff0c;不与当前文档关联){try{Bitmap …

娱乐五子棋(附加源码)

一写在开头 上期代码主要实现瀑布流功能&#xff0c;本期就来实现五子棋小游戏&#xff0c;开发久了很多功能都是通过框架组件库来完成&#xff0c;但是如果组件满足不了开发需求&#xff0c;还需要开发人员手动封装组件&#xff0c;专门出这样一期文章&#xff0c;通过原生js实…

XMOS将在CES 2025上展出多款由边缘AI驱动的创新音效、音频、识别和处理解决方案

全球智能物联网技术领导者暨匠心独到的半导体科技企业XMOS宣布&#xff1a;该公司将再次参加2025年国际消费电子展&#xff08;CES 2025&#xff09;&#xff0c;并将在本届CES上展出一系列由人工智能&#xff08;AI&#xff09;驱动的全新空间音效、语音捕获与降噪、音视频多模…