原文地址: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:详细抓取日志和关键词统计

视频版本