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

Python3请求EveMarketer XML接口报strconv.ParseUint无效语法问题求解

问题解决方法

错误来源分析

strconv.ParseUint 是Go语言标准库中字符串转无符号整数的方法,该报错是EveMarketer服务端返回的参数校验错误,并非你本地Python代码的语法错误。
原因是你从Excel读取的typeid被xlrd默认解析为浮点数类型,比如原始值18读取后为18.0,直接转字符串拼接后URL的typeid参数值为18.0,不符合接口要求的正整数格式,服务端解析参数失败返回该错误。

解决步骤

  • 第一步:将读取到的typeid先转为整数类型,再拼接为URL参数
    将代码中拼接URL的部分:
    url = "https://api.evemarketer.com/ec/marketstat?typeid=" + str(i) + "&usesystem=30000142"
    
    修改为:
    # 先转int去掉浮点数的.0后缀,再转字符串
    url = f"https://api.evemarketer.com/ec/marketstat?typeid={int(i)}&usesystem=30000142"
    
  • 第二步:可选优化,增加响应状态校验,提前识别请求异常
    可以在拿到响应后先判断状态码是否为200,再解析返回内容:
    resp = http.request("GET", url)
    if resp.status == 200:
        print(resp.data.decode('utf-8'))
    else:
        print(f"请求失败,状态码:{resp.status},返回内容:{resp.data.decode('utf-8')}")
    
  • 第三步:可选性能优化,批量传参减少请求次数
    该接口支持同时传入多个typeid,用英文逗号分隔,你可以先把所有typeid处理为整数后拼接为一个字符串,只发一次请求即可拿到所有数据,避免循环请求被接口限流。

修改后完整参考代码

import xlrd
import xlwt
import urllib3
import xml.etree.ElementTree as ET
import xmltodict

loc = "C:\\Users\\nhoff\\AutomatedTrader\\Data.xls"
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)
typeID = sheet.col_values(0)
wb = xlwt.Workbook()
score = 1
http = urllib3.PoolManager()

for i in typeID[1:]:
    # 跳过空值行
    if not i:
        continue
    # 转整数后拼接参数
    url = f"https://api.evemarketer.com/ec/marketstat?typeid={int(i)}&usesystem=30000142"
    try:
        resp = http.request("GET", url)
        if resp.status == 200:
            print(resp.data.decode('utf-8'))
        else:
            print(f"请求typeid={int(i)}失败,状态码:{resp.status}")
    except urllib3.exceptions.HTTPError as error:
        print(error)

内容的提问来源于stack exchange,提问作者Nathan Hoffman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:57:03