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

使用pandas读取CSV列作为检索参数请求网站报No connection adapters错误

问题原因

  • 你通过pd.read_csv读取数据后得到的Chem是DataFrame类型对象,而非你预期的分子式字符串。直接将DataFrame与URL字符串拼接时,pandas会输出包含列名、行号的完整表格文本,生成非法URL格式,requests无法识别该格式才抛出对应错误。

修复后的代码

import requests
import pandas as pd
from bs4 import BeautifulSoup as BS
import time

# 读取CSV文件
df = pd.read_csv('single.csv', usecols=['Molecular Formula'])

# 遍历每个分子式单独发起请求
for formula in df['Molecular Formula']:
    # 用params参数自动处理URL编码,避免手动拼接出错
    query_params = {
        'utf8': '✓',
        'query': formula,
        'searcher': 'metabolites',
        'button': ''
    }
    res = requests.get('https://hmdb.ca/unearth/q', params=query_params)
    # 增加请求状态校验,避免异常终止
    if res.status_code != 200:
        print(f"分子式{formula}查询失败,状态码:{res.status_code}")
        time.sleep(1)
        continue
    soup = BS(res.content, 'html.parser')
    hit_list = soup.find_all('div', attrs={'class':'hit-name'})
    print(f"\n=== {formula} 检索结果 ===")
    for div in hit_list:
        print(div.text.strip())
    # 增加请求间隔,避免被网站拦截
    time.sleep(1)

补充说明

  • 用requests内置的params参数传递查询条件,会自动对特殊字符做URL编码,比手动拼接URL兼容性更好
  • 批量请求时增加间隔时间,可降低被网站反爬机制拦截的概率

内容的提问来源于stack exchange,提问作者Charlie P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:39:03