R语言下拉列表网页爬取问题:获取签发国家列表报错排查
问题排查与解决方案
问题根源
你通过getURL获取页面后再传入read_html,容易出现编码或解析适配问题;而且rvest本身自带的read_html可以直接处理URL,无需依赖RCurl做额外请求。你的XPath语法本身没问题,但可以用更简洁直观的方式实现需求。
修正后的代码
library(rvest) library(dplyr) # 直接用rvest内置方法读取目标页面 url <- "https://ec.europa.eu/taxation_customs/dds2/ebti/ebti_consultation.jsp?Lang=en" page <- read_html(url) # 提取签发国家下拉框中第二个及以后的选项 dropdown_options <- page %>% html_element("#refcountry") %>% # 定位到id为refcountry的下拉框 html_elements("option") %>% # 获取所有选项节点 .[-1] %>% # 移除第一个默认选项 html_text() # 提取选项文本 # 查看结果 print(dropdown_options)
代码说明
- 移除了不必要的依赖包,只保留核心的
rvest和dplyr - 用
read_html(url)直接读取页面,避免getURL可能引发的解析异常 - 通过
.[-1]剔除第一个选项,比XPath的position()>1写法更直观易懂 - 分步定位元素,逻辑更清晰,便于后续调试
异常处理补充
如果遇到反爬拦截,可添加浏览器UA头模拟正常请求:
page <- read_html(url, user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
内容的提问来源于stack exchange,提问作者LACL
相关产品推荐
相关产品推荐

