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

Web Scraping:如何自动展开MEDDRA页面隐藏子列表获取编码?

解决MEDDRA编码自动抓取的问题

以下是几种可行的解决方案:

方法一:用RSelenium模拟浏览器交互

rvest仅能处理静态HTML,动态展开的内容需要模拟用户点击操作,RSelenium可直接控制浏览器完成流程:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器(需提前配置对应版本的ChromeDriver)
driver <- rsDriver(browser = "chrome")
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://bioportal.bioontology.org/ontologies/MEDDRA?p=classes&conceptid=10040786")

# 定位展开按钮并点击(替换为实际页面的元素选择器,如css或xpath)
expand_btn <- remDr$findElement(using = "css selector", value = ".expand-button-class")
expand_btn$clickElement()

# 等待内容加载完成
Sys.sleep(2)

# 获取加载后的页面源码并解析
page_source <- remDr$getPageSource()[[1]]
page <- read_html(page_source)
meddra_codes <- page %>% html_elements(".code-selector") %>% html_text()

# 清理资源
remDr$close()
driver$server$stop()

方法二:构造合法的XHR请求

你看到的_=1667913401293参数是毫秒级Unix时间戳,用于防止缓存,生成逻辑为当前时间秒数乘以1000。直接构造请求即可获取展开后的内容:

library(httr)
library(rvest)

# 生成毫秒级时间戳
timestamp <- as.character(as.integer(Sys.time()) * 1000)

# 替换为抓包得到的实际XHR接口地址
api_url <- paste0("https://bioportal.bioontology.org/xxx/xxx?_=", timestamp)

# 发送请求,带上必要请求头模拟浏览器访问
response <- GET(api_url, add_headers(
  "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
  "Referer" = "https://bioportal.bioontology.org/ontologies/MEDDRA?p=classes&conceptid=10040786"
))

# 解析返回内容(根据实际格式调整,可能是JSON或HTML)
content <- content(response, as = "text")
page <- read_html(content)
meddra_codes <- page %>% html_elements(".code-selector") %>% html_text()

方法三:直接使用MEDDRA结构化数据集

若使用许可允许,直接下载MEDDRA官方提供的结构化数据文件(如CSV、XML格式),这种方式比网页抓取更稳定,无需处理动态页面问题,但需遵守MEDDRA的使用协议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:01:04