如何将requests返回的XML数据转换为可遍历对象提取指定字段?
处理XML数据提取指定字段的方法
以下是几种将你获取的XML数据转换为可遍历对象(字典列表、DataFrame)并提取NAME、VOL、LAST、MATCHED字段的实用方法:
方法一:用Python标准库解析为字典列表
使用xml.etree.ElementTree(Python内置库)解析XML,遍历节点提取目标属性:
import xml.etree.ElementTree as ET # 替换为你通过requests获取的XML字符串 xml_content = '''<info> <stats vol="545080705" orders="718021755"/> <symbols timestamp="2022-09-08 19:56:37" count="11394"> <symbol name="TQQQ" vol="8700394" last="28.23" matched="8382339" /> <symbol name="SPY" vol="8571092" last="401.00" matched="8209174" /> <symbol name="SQQQ" vol="7091770" last="44.39" matched="6734334" /> <symbol name="AVCT" vol="6493626" last="0.17" matched="6469576" /> <symbol name="UVXY" vol="6158364" last="9.42" matched="6142800" /> </symbols> </info>''' # 解析XML字符串 root = ET.fromstring(xml_content) # 定位所有<symbol>节点 symbol_elements = root.findall('.//symbol') # 提取目标字段到字典列表 symbol_list = [] for elem in symbol_elements: symbol_list.append({ 'NAME': elem.attrib['name'], 'VOL': int(elem.attrib['vol']), 'LAST': float(elem.attrib['last']), 'MATCHED': int(elem.attrib['matched']) }) # 遍历使用数据 for item in symbol_list: print(f"{item['NAME']}: 成交量{item['VOL']}, 最新价{item['LAST']}")
方法二:转换为Pandas DataFrame
如果需要进行数据分析,直接转为DataFrame更方便:
方式1:基于字典列表生成
import pandas as pd df = pd.DataFrame(symbol_list) # 查看数据 print(df.head())
方式2:用Pandas直接读取XML(Pandas 1.3.0及以上版本支持)
import pandas as pd # 直接从XML字符串读取指定节点和属性 df = pd.read_xml( xml_content, xpath='.//symbol', attrs=['name', 'vol', 'last', 'matched'] ) # 重命名列并转换数据类型 df = df.rename(columns={ 'name': 'NAME', 'vol': 'VOL', 'last': 'LAST', 'matched': 'MATCHED' }).astype({ 'VOL': int, 'LAST': float, 'MATCHED': int }) # 操作DataFrame,比如筛选成交量大于700万的标的 filtered_df = df[df['VOL'] > 7000000] print(filtered_df)
内容的提问来源于stack exchange,提问作者Landon Statis
相关产品推荐
相关产品推荐

