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

如何用R从Uniprot网页提取以Tc00开头的字符串?

解决方案:从UniProt提取Tc00开头字符串

问题根源

UniProt当前页面依赖动态JavaScript渲染,rvest的read_html()只能抓取静态HTML,因此返回的是JS禁用时的 fallback提示,无法获取实际页面内容。


方法1:调用UniProt官方API(推荐)

直接使用UniProt的REST API获取数据,无需处理动态渲染,效率更高且稳定。

library(httr)
library(stringr)

# 指定目标UniProt ID
uniprot_id <- "Q4DQV8"
# 构造纯文本格式的API请求链接
api_url <- paste0("https://rest.uniprot.org/uniprotkb/", uniprot_id, ".txt")

# 发送请求并获取内容
response <- GET(api_url)
raw_content <- content(response, as = "text")

# 提取以Tc00开头的字符串
target_string <- str_extract(raw_content, "Tc00\\S*")
print(target_string)

方法2:用RSelenium模拟浏览器加载

如果必须从前端页面抓取,需要模拟真实浏览器加载动态内容:

library(RSelenium)
library(rvest)
library(stringr)

# 启动Chrome驱动(需确保ChromeDriver与本地Chrome版本匹配)
driver <- rsDriver(browser = "chrome", port = 4567L, chromever = "latest")
browser_client <- driver[["client"]]

# 访问目标页面
browser_client$navigate("http://www.uniprot.org/uniprot/Q4DQV8")

# 获取渲染后的页面源码
page_source <- browser_client$getPageSource()[[1]]
parsed_page <- read_html(page_source)

# 提取文本并匹配目标字符串
page_text <- parsed_page %>% html_text()
target_string <- str_extract(page_text, "Tc00\\S*")
print(target_string)

# 清理资源
browser_client$close()
driver[["server"]]$stop()

注意:使用RSelenium前需安装对应浏览器的驱动(如ChromeDriver),并保证驱动版本与浏览器版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:55:05