原文地址:https://itxiaozhang.com/python-hmdb-metabolite-biosource-extractor/
本文配合视频食用效果最佳,视频版本在文章末尾。
核心功能
- 自动化数据采集:基于requests库实现稳定可靠的数据抓取
- 智能内容解析:采用lxml高效提取HTML中的关键信息
- 多维度分类:精准识别7类生物来源(人类、食品、微生物等)
- 双语日志系统:中英文混合日志记录,便于问题追踪
- 结构化输出:标准CSV格式结果,兼容各类分析工具
- 实时进度监控:可视化进度条显示任务执行情况
使用指南
准备工作
- 创建输入文件
hmdb_id.txt
,每行包含一个HMDB ID
- 推荐使用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咨询服务。如果您有任何电脑相关的问题,都可以问我噢。