4步教你用rvest抓取网页并保存为CSV文件

简介: 本文介绍如何使用R语言的`rvest`包抓取网页数据并保存为CSV文件,以界面新闻网站为例。通过设置代理IP(如亿牛云)、User-Agent和Cookie,增强访问稳定性和安全性。代码涵盖环境配置、数据抓取、解析及保存步骤,确保高效、稳定地获取网页数据。适用于数据分析和统计分析场景。

爬虫代理加强版

背景/引言

在数据分析和统计分析中,我们经常需要将网站上的数据进行抓取,以便进行更进一步分析。这里,我们将介绍如何使用 R 语言中的 rvest 包来抓取网页,并将数据保存为 CSV 文件。文章中展示如何设置代理IP,为抓取添加驱动,以及设置User-Agent和Cookie来增强网站访问的稳定性和安全性。

界面新闻(https://www.jiemian.com)是一个以提供全面新闻信息为主的日报网站,包括政策、经济、科技、文化等各类分析和讨论。并以其新闻出版速度和标题精准性著称。在这里,我们将以采集该网站举个例,指导你完成整个过程。


正文

步骤一:安装并展示环境配置

首先,确保你已经安装了 R 和相关包。如果未安装,可通过下列指令安装:

install.packages("rvest")
install.packages("httr")
install.packages("xml2")

步骤二:使用代理IP

为了减少被限制的风险,我们可以使用爬虫代理IP。代理服务器的信息,比如使用“亿牛云爬虫代理”:

  • 域名:proxy.16yun.cn
  • 端口:12345
  • 用户名:username
  • 密码:password

步骤三:抓取数据

在抓取网页时,需要添加 User-Agent 和 Cookie 来驱动添加访问,例如:

library(rvest)
library(httr)

# 配置代理和请求头 (亿牛云爬虫代理 www.16yun.cn)
proxy_url <- "http://proxy.16yun.cn:12345"
proxy_auth <- authenticate("username", "password", type = "basic")
headers <- add_headers(
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
  `Cookie` = "your_cookie_here"
)

# 请求网页
url <- "https://www.jiemian.com"
page <- GET(url, proxy(proxy_url), proxy_auth, headers)

# 解析网页
html <- content(page, "text")
doc <- read_html(html)

# 摘取新闻标题
news_titles <- doc %>% html_nodes(".news-title-class") %>% html_text()
news_links <- doc %>% html_nodes(".news-title-class") %>% html_attr("href")

# 合并数据
news_data <- data.frame(
  title = news_titles,
  link = news_links
)

步骤四:将数据保存为CSV文件

将抓取到的数据导出为CSV:

write.csv(news_data, "jiemian_news.csv", row.names = FALSE)

实例

通过上述代码,我们将能够获取网页中的新闻标题和链接,并保存为本地 CSV 文件。

注意:为保证运行成功,需确保:

  1. 爬虫代理IP配置正确有效。
  2. User-Agent和Cookie设置与网站匹配。
  3. 对网页节点的选择符合实际格式。

结论

通过上述步骤,我们可以完成用 R 语言和 rvest 包对网页数据的自动化探索和摘取。以上代码注重地是应用爬虫代理IP和访问头,增强抓取稳定性和安全性,同时能够最大化源数据。如需对抓取内容进一步处理,可以增加相关数据进行分析。

相关文章
|
监控 调度 数据安全/隐私保护
ERP系统中的财务预算与资金管理解析
【7月更文挑战第25天】 ERP系统中的财务预算与资金管理解析
896 2
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
711 174
|
11月前
|
存储 监控 固态存储
RAID10怎么创建?RAID10创建详细步骤
RAID 10(RAID 1+0)是一种结合了RAID 1镜像与RAID 0条带化技术的存储阵列,兼具高性能和数据冗余优势。其创建需7步:硬件准备、配置RAID设备、选择级别、添加硬盘、设置条带化大小、保存退出及初始化阵列。RAID 10通过两两分组构建RAID 1镜像,再以RAID 0连接提升性能。但成本较高,且若单镜像内两盘同时损坏,数据将无法恢复。未来,SSD普及、NVMe应用及软件定义存储等趋势将进一步优化RAID 10性能。创建时需注意备份数据、选用可靠硬件并定期维护监控。
794 7
|
机器学习/深度学习 人工智能 大数据
基于联邦学习的数据隐私保护机制在智能模型训练中的应用
【8月更文第15天】随着大数据和人工智能的发展,数据隐私保护成为了亟待解决的问题。传统的集中式机器学习方法需要将数据收集到一个中心服务器进行处理,这不仅增加了数据泄露的风险,还可能触犯相关的法律法规。联邦学习(Federated Learning, FL)作为一种新兴的分布式机器学习框架,允许终端设备直接在本地数据上训练模型,并仅将更新后的模型参数发送给中心服务器汇总,从而在不暴露原始数据的情况下实现模型训练。
785 0
|
数据采集 安全
Burpsuite Scanner扫描功能实现自动化shentou
Burpsuite Scanner扫描功能实现自动化shentou
|
存储 缓存 并行计算
yolov5的train.py的参数信息解析
这篇文章解析了YOLOv5的`train.py`脚本中的参数信息,详细介绍了每个参数的功能和默认值,包括权重路径、模型配置、数据源、超参数、训练轮数、批量大小、图像尺寸、训练选项、设备选择、优化器设置等,以便用户可以根据需要自定义训练过程。
669 0
阿里云短信服务的计费方式、规则和欠费说明_短信服务
阿里云短信服务的计费方式、规则和欠费说明_短信服务,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
1158 0
|
存储 编解码 PyTorch
Transformers 4.37 中文文档(六十六)(1)
Transformers 4.37 中文文档(六十六)
303 0
|
负载均衡 Java 数据处理
【C++ 并发 线程池】轻松掌握C++线程池:从底层原理到高级应用(三)
【C++ 并发 线程池】轻松掌握C++线程池:从底层原理到高级应用
987 2
|
SQL 前端开发 JavaScript
18款Visual Studio实用插件
18款Visual Studio实用插件
1354 0