0

0

如何使用 R 语言高效爬取欧洲议会成员信息并结构化整理

碧海醫心

碧海醫心

发布时间:2026-02-08 09:04:34

|

473人浏览过

|

来源于php中文网

原创

如何使用 R 语言高效爬取欧洲议会成员信息并结构化整理

本文介绍如何利用 rvest 包从欧洲议会官网批量抓取议员姓名、所属党团及国籍/政党信息,并通过矩阵转换实现三列结构化存储,适用于多语言网页的稳健解析。

在数据采集实践中,欧洲议会官网(https://www.php.cn/link/e73b38ff519142fdc3723ddf4a3a5825)是获取权威议员信息的重要来源。其成员列表页(如意大利语版 https://www.php.cn/link/e73b38ff519142fdc3723ddf4a3a5825/meps/it/full-list/all)采用语义清晰的 HTML 结构:议员姓名通常位于

标签中,而党团(Political Group)、国籍(Country)和国内政党(National Party)则统一包裹在
容器内——每名议员对应三条连续文本行,顺序固定为:党团 → 国籍 → 国内政党。

要将该“三行一组”的扁平化文本流转化为结构化数据表,关键在于正确重塑(reshape)向量。html_text() 返回的是字符向量,长度为 3 × N(N 为议员总数)。此时直接调用 matrix(..., ncol = 3, byrow = TRUE) 即可按行优先方式将其重排为 N × 3 矩阵,完美匹配字段逻辑。

以下是完整、可复现的 R 教程代码:

文赋Ai论文
文赋Ai论文

专业/高质量智能论文AI生成器-在线快速生成论文初稿

下载
library(rvest)
library(dplyr)

# Step 1: 抓取页面
url <- "https://www.php.cn/link/e73b38ff519142fdc3723ddf4a3a5825/meps/it/full-list/all"
page <- read_html(url)

# Step 2: 提取议员姓名(每个  对应一人)
names_vec <- page %>%
  html_elements("div.erpl_title-h4.t-item") %>%
  html_text(trim = TRUE)

# Step 3: 提取附加信息(党团/国籍/国内政党),并重塑为三列矩阵
info_vec <- page %>%
  html_elements(".sln-additional-info") %>%
  html_text(trim = TRUE)

# ⚠️ 注意:确保 info_vec 长度是 names_vec 的 3 倍,否则 reshape 会出错
if (length(info_vec) != 3 * length(names_vec)) {
  warning("附加信息条目数与议员数不匹配(应为3倍),请检查CSS选择器或页面结构变更")
}

info_mat <- matrix(info_vec, ncol = 3, byrow = TRUE)
colnames(info_mat) <- c("Political_Group", "Country", "National_Party")

# Step 4: 合并为数据框(推荐替代 cbind,避免类型强制转换问题)
df <- data.frame(
  Name = names_vec,
  Political_Group = info_mat[, 1],
  Country = info_mat[, 2],
  National_Party = info_mat[, 3],
  stringsAsFactors = FALSE
)

# 查看前6行结果
head(df)

重要注意事项:

  • 编码与语言版本:示例使用意大利语路径(/meps/it/...),若需其他语言(如英语 /meps/en/...),请同步更新 URL 并验证 CSS 类名是否一致(部分语言版本可能微调 class 名,建议始终用 Chrome DevTools 实时校验);
  • 反爬与稳定性:该站点无强反爬机制,但建议添加 Sys.sleep(1) 或使用 httr::GET(..., timeout(10)) 增强鲁棒性;
  • 数据清洗:html_text() 可能引入多余空格或换行符,务必启用 trim = TRUE;
  • 避免 cbind() 直接拼接:cbind() 会将所有列转为 character,且返回矩阵而非数据框;使用 data.frame() 显式构造更可控、可扩展;
  • ? 动态分页处理:当前链接为“全量列表”,若目标页面分页(如 /meps/it/full-list/1),需循环抓取并 rbind() 合并。

本方案以最小依赖、最大可读性完成从原始 HTML 到规整表格的转化,是政务公开数据采集的典型范式。掌握此模式后,可快速适配类似“三字段并列展示”的政府名录类网站。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

899

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

768

2023.11.06

chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

899

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

768

2023.11.06

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

536

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

18

2025.12.06

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2343

2024.08.16

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

35

2026.02.06

java多线程方法汇总
java多线程方法汇总

本专题整合了java多线程面试题、实现函数、执行并发相关内容,阅读专题下面的文章了解更多详细内容。

15

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

CSS教程
CSS教程

共754课时 | 28.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号