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

如何用BeautifulSoup更高效提取Lipidmaps中离子的m/z与分子式?

从LipidMaps页面提取离子数据的优化方案

你不需要将option标签转为字符串再用strip处理,BeautifulSoup直接支持读取标签的自定义data属性,这是更简洁可靠的方法。以下是优化后的实现代码:

from bs4 import BeautifulSoup
import requests

# 请求并解析页面
url = "https://www.lipidmaps.org/databases/lmsd/LMFA08040013"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 遍历所有option标签提取数据
ion_data_list = []
for option in soup.find_all('option'):
    # 提取离子形式(自动去除前后空白)
    ion = option.get_text(strip=True)
    # 提取分子式(直接读取结构化属性)
    ion_formula = option.get('data-formula')
    # 提取m/z值(直接读取结构化属性)
    m_z = option.get('data-mass-z-ratio')
    
    # 过滤无效数据
    if all([ion, ion_formula, m_z]):
        ion_data_list.append({
            'ion': ion,
            'ion_formula': ion_formula,
            'm_z': m_z
        })

# 打印示例结果
for data in ion_data_list:
    print(f"m_z = {data['m_z']}")
    print(f"ion-formula = {data['ion_formula']}")
    print(f"ion = {data['ion']}\n")

核心优化点:

  • option.get_text(strip=True):直接获取标签内文本并自动清理空白,替代手动字符串处理
  • option.get('data-formula'):读取页面原生存储的结构化分子式数据,比解析HTML字符串更准确
  • option.get('data-mass-z-ratio'):直接读取m/z的结构化数值,无需额外解析操作

示例输出:

m_z = 300.2897
ion-formula = C18H38NO2
ion = [M+H]+

内容的提问来源于stack exchange,提问作者Nima Hojat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:45:44