使用Python从HMDB网站提取代谢物生物来源信息

原文地址:https://itxiaozhang.com/python-hmdb-metabolite-biosource-extractor/
本文配合视频食用效果最佳,视频版本在文章末尾。

核心功能

  • 自动化数据采集:基于requests库实现稳定可靠的数据抓取
  • 智能内容解析:采用lxml高效提取HTML中的关键信息
  • 多维度分类:精准识别7类生物来源(人类、食品、微生物等)
  • 双语日志系统:中英文混合日志记录,便于问题追踪
  • 结构化输出:标准CSV格式结果,兼容各类分析工具
  • 实时进度监控:可视化进度条显示任务执行情况

使用指南

准备工作

  1. 创建输入文件hmdb_id.txt,每行包含一个HMDB ID
  2. 推荐使用Python 3.7+环境

环境配置

1
2
# 安装依赖库
pip install requests lxml pandas

执行程序

1
python get_disposition.py

部分代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 检查并读取输入文件
if not os.path.exists('hmdb_id.txt'):
print("错误:未找到hmdb_id.txt")
exit()

with open('hmdb_id.txt', 'r', encoding='utf-8') as f:
hmdb_ids = [line.strip() for line in f if line.strip()]

# 去重处理
unique_ids = list(set(hmdb_ids))
print(f"发现{len(unique_ids)}个唯一HMDB ID")

# 初始化结果存储
results = {'HMDB_ID': [], 'Human': [], 'Food': [], 'Microbial': []}

for idx, hmdb_id in enumerate(unique_ids, 1):
try:
# 网络请求带超时设置
response = requests.get(f'https://hmdb.ca/metabolites/{hmdb_id}', timeout=10)
response.raise_for_status()

# 核心解析逻辑(示例占位符)
# [此处为生物来源分析的核心处理流程]

# 模拟解析结果
results['HMDB_ID'].append(hmdb_id)
results['Human'].append('yes' if idx%2 else 'no')

except requests.exceptions.RequestException as e:
print(f"{hmdb_id} 请求失败: {str(e)}")
except Exception as e:
print(f"{hmdb_id} 解析错误: {str(e)}")

# 实时显示进度
progress = idx/len(unique_ids)*50
print(f"[{'='*int(progress)}{' '*(50-int(progress))}] {idx/len(unique_ids):.0%}", end='\r')

# 保存结构化结果
try:
pd.DataFrame(results).to_csv('disposition_results.csv', index=False)
print("\n结果已保存至 disposition_results.csv")
except Exception as e:
print(f"保存失败: {str(e)}")

输出结果

  • disposition_results.csv:包含各ID的生物来源标记(yes/no)
  • disposition_log.txt:详细抓取日志和关键词统计

视频版本


▶ 可以在关于或者这篇文章找到我的联系方式。
▶ 本网站的部分内容可能来源于网络,仅供大家学习与参考,如有侵权请联系我核实删除。
我是小章,目前全职提供电脑维修和IT咨询服务。如果您有任何电脑相关的问题,都可以问我噢。


使用Python从HMDB网站提取代谢物生物来源信息
https://itxiaozhang.com/python-hmdb-metabolite-biosource-extractor/
作者
小章
发布于
2025年4月27日
许可协议