使用Python+bs4提取NCBI跳转链接中基因指定数据的问题求助
NCBI基因Summary信息提取实现
修正后可运行代码
import requests from bs4 import BeautifulSoup # 添加请求头避免被NCBI反爬机制拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } gen_ids = ['APOE','SLC7A11'] for gen in gen_ids: print(f"===== 处理基因:{gen} =====") # 构造基因搜索请求URL search_url = f"https://www.ncbi.nlm.nih.gov/gene/?term={gen}" r = requests.get(search_url, headers=headers, allow_redirects=True) # 直接获取跳转后的最终基因详情子URL final_url = r.url print(f"跳转后详情页URL:{final_url}") # 解析页面提取Summary内容 soup = BeautifulSoup(r.text, 'lxml') summary = soup.find('div', class_='summary') if summary: print("Summary内容:") print(summary.get_text(strip=True)) else: print("未找到对应Summary内容") print("\n")
调整说明
- 新增请求头模拟浏览器访问,解决NCBI拦截默认requests请求、返回非正常页面的问题
- 无需单独解析href属性,直接通过请求返回对象的
url属性即可获取跳转后的最终详情页URL - NCBI基因详情页的Summary内容对应
class为summary的div标签,直接定位该元素即可提取对应文本
内容的提问来源于stack exchange,提问作者naoki
相关产品推荐
相关产品推荐

