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

使用Requests和Beautiful Soup无法获取AlphaFold数据库搜索结果的问题

判断与解决方案

你的判断是正确的

AlphaFold的搜索结果页面依赖JavaScript动态渲染内容。requests库只能获取服务器返回的静态HTML骨架,而实际的搜索结果(包括蛋白ID P82662和关键词)是页面加载后通过JavaScript异步请求后端接口并渲染到DOM中的,所以直接用requests+BeautifulSoup拿不到这些内容。

解决方法

方法1:直接调用AlphaFold的公开API(推荐)

动态页面的渲染数据通常来自后端API接口,你可以通过浏览器开发者工具找到对应的接口:

  • 打开目标搜索页面,按下F12打开开发者工具,切换到「网络」面板
  • 筛选「Fetch/XHR」类型的请求,找到返回搜索结果的接口(通常URL包含api/search/text/这类路径)
  • 用requests直接请求该API接口,获取JSON格式的响应数据,从中提取蛋白ID等信息

示例代码:

import requests

search_keyword = "Alpha-elapitoxin-Oh2b"
api_url = f"https://alphafold.ebi.ac.uk/api/search/text/{search_keyword}"

response = requests.get(api_url)
data = response.json()

# 从返回的JSON中提取目标蛋白ID
for result in data.get('results', []):
    if result.get('uniprotAccession') == 'P82662':
        print(f"找到蛋白ID: {result['uniprotAccession']}")
        # 可按需提取其他信息,如结构ID、蛋白名称等

方法2:使用无头浏览器模拟渲染

如果不想查找API,可以用无头浏览器模拟真实浏览器的加载过程,等待JavaScript渲染完成后再抓取页面内容:

  • 推荐使用playwright(轻量易用),先安装依赖:
    pip install playwright
    playwright install chromium
    
  • 示例代码:
    from playwright.sync_api import sync_playwright
    from bs4 import BeautifulSoup
    
    url = "https://alphafold.ebi.ac.uk/search/text/Alpha-elapitoxin-Oh2b"
    
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(url)
        # 等待搜索结果元素加载完成,可根据页面结构调整选择器
        page.wait_for_selector('[data-testid="search-result-item"]')
        # 获取渲染后的完整HTML
        html = page.content()
        browser.close()
    
        # 用BeautifulSoup解析HTML
        soup = BeautifulSoup(html, 'html.parser')
        # 根据页面实际结构查找蛋白ID元素
        protein_id = soup.find('div', class_='css-15j5yye').text.strip()
        print(f"找到蛋白ID: {protein_id}")
    

注意事项

  • 调用API时需遵守AlphaFold的服务条款,避免频繁请求导致IP被封禁
  • 使用无头浏览器时,设置合理的等待时间和请求间隔,模拟真实用户行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:20:39