You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R从Reptile数据库抓取数据时如何提取目标物种页面链接

问题原因

现有代码无法提取到目标链接的核心原因有两个:

  • 错误设置请求编码为json:该站点高级搜索接口仅支持标准表单格式(application/x-www-form-urlencoded)提交参数,JSON格式的请求体不会被服务端识别,相当于提交了空的搜索请求
  • 未开启重定向跟随:合法搜索请求提交后,服务端会返回302状态码跳转到结果页,默认POST配置不会自动跳转,拿到的响应只是中间跳转页内容,自然找不到目标物种链接
修正代码

需要先安装依赖包rvest用于HTML内容解析,完整可运行代码如下:

library(httr)
library(rvest)
library(tidyverse)

# 提交搜索请求
res <- POST(
  url = "http://reptile-database.reptarium.cz/advanced_search",
  encode = "form",
  body = list(
    genus = "Chamaeleo",
    species = "dilepis",
    submit = "Search"
  )
)

# 跟随重定向到结果页
res <- GET(
  url = headers(res)$location,
  config = set_cookies(res$cookies)
)

# 解析页面提取物种详情链接
page <- read_html(res)
target_link <- page %>%
  html_element(xpath = "//a[contains(@href, 'species?genus=Chamaeleo&species=dilepis')]") %>%
  html_attr("href") %>%
  paste0("https://reptile-database.reptarium.cz/", .)
优化建议
  • 批量爬取时不需要每次走高级搜索接口,可以直接按照species?genus=[属名]&species=[种名]的格式拼接目标详情页URL,请求效率更高
  • 控制请求频率,单次请求后添加Sys.sleep(2)间隔2秒,避免触发站点反爬限制
  • 提取图片时直接解析详情页内的<img>标签,筛选和物种相关的图片资源地址即可,注意补全相对路径为完整可访问链接

内容的提问来源于stack exchange,提问作者Agus camacho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:01:19