背景/引言
在数据分析和统计分析中,我们经常需要将网站上的数据进行抓取,以便进行更进一步分析。这里,我们将介绍如何使用 R 语言中的 rvest
包来抓取网页,并将数据保存为 CSV 文件。文章中展示如何设置代理IP,为抓取添加驱动,以及设置User-Agent和Cookie来增强网站访问的稳定性和安全性。
正文
步骤一:安装并展示环境配置
首先,确保你已经安装了 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 文件。
注意:为保证运行成功,需确保:
- 爬虫代理IP配置正确有效。
- User-Agent和Cookie设置与网站匹配。
- 对网页节点的选择符合实际格式。
结论
通过上述步骤,我们可以完成用 R 语言和 rvest
包对网页数据的自动化探索和摘取。以上代码注重地是应用爬虫代理IP和访问头,增强抓取稳定性和安全性,同时能够最大化源数据。如需对抓取内容进一步处理,可以增加相关数据进行分析。