如何用R获取CIF项目页面的所有项目链接?
修正R代码获取CIF项目详情链接
问题根源
你当前的代码错误是因为没有正确提取.list-title下的<a>标签的href属性,并且拼接基础URL时缺少必要斜杠,导致路径错误拼接成projectslist-title这类无效格式。
修正方案
假设你使用rvest包进行网页抓取,正确的实现逻辑是先定位到项目标题对应的链接标签,提取相对路径后再与基础URL安全拼接:
library(rvest) library(urltools) # 用于自动处理URL拼接的斜杠问题 # 基础URL(确保末尾带斜杠,或用url_join自动处理) base_url <- "https://www.cif.org/projects/" # 抓取项目列表页面 project_page <- read_html(base_url) # 提取所有单个项目的完整链接 project_links <- project_page %>% html_elements(".list-title a") %>% # 定位到.list-title节点下的<a>标签 html_attr("href") %>% # 提取链接的相对路径 url_join(base_url) # 安全拼接基础URL和相对路径 # 验证结果 head(project_links)
关键细节
- 选择器修正:必须定位到
.list-title下的<a>标签,而非仅.list-title节点,才能获取到项目的实际路径。 - URL拼接优化:
urltools包的url_join函数会自动处理基础URL与相对路径的斜杠匹配,避免手动拼接的错误。如果不想额外安装包,也可以手动确保基础URL末尾带斜杠后,用paste0(base_url, href)完成拼接。
内容的提问来源于stack exchange,提问作者EvaMaS
相关产品推荐
相关产品推荐

