我如何从API返回缺失的xml参数为空



我正在从以下站点提取数据并创建一系列列表,其结果最终被附加到数据框架中。当数据从我的请求中丢失时,它不会在列表中写入no,这会导致表格数据的不对齐。列表可以包含40到46个项目,具体取决于。

for element in callsignlist:
r = requests.get(f'https://xmldata.qrz.com/xml/current/?s={key};callsign={element}')
root = ET.fromstring(r.content)
for elm in root.findall(".//{http://xmldata.qrz.com}call"):
result = elm.text
if result == "":
callsign.append("Nope")
else:
callsign.append(result)

for elm in root.findall(".//{http://xmldata.qrz.com}fname"):
result = None
result = elm.text
if result == "":
name.append("Nope")
else:
name.append(result)

我尝试使用的不是if语句中的各种其他项目,我认为这会触发将None写入列表。但似乎没有什么能做到这一点。如有任何帮助,不胜感激。

这是请求的r.content的副本。我的脚本通过并拉各种呼号,并获得他们的数据,然而,一些用户不填写电子邮件,例如,所以我的数据得到所有混乱的名字不关联到一个适当的电子邮件或地址。理想情况下,我只是想建立一个用户信息的数据库,我的联系人在业余无线电。

b'<?xml version="1.0" encoding="utf-8" ?>n<QRZDatabase version="1.36" xmlns="http://xmldata.qrz.com">n<Callsign>n<call>VA6TI</call>n<dxcc>1</dxcc>n<nickname>Ty</nickname>n<fname>Tyler</fname>n<name>Kacsor</name>n<addr1></addr1>n<addr2>Lethbridge</addr2>n<state>AB</state>n<zip></zip>n<country>Canada</country>n<lat></lat>n<lon></lon>n<grid>DN39or</grid>n<ccode>49</ccode>n<land>Canada</land>n<qslmgr>LOTW</qslmgr>n<email>testuser@gmail.com</email>n<u_views>1064</u_views>n<bio>1253</bio>n<biodate>2022-11-06 22:18:05</biodate>n<image>https://cdn-xml.qrz.com/i/va6ti/IMG_7281.jpg</image>n<imageinfo>1200:900:634993</imageinfo>n<moddate>2022-08-19 19:33:24</moddate>n<eqsl>1</eqsl>n<mqsl>1</mqsl>n<cqzone>4</cqzone>n<ituzone>2</ituzone>n<geoloc>user</geoloc>n<name_fmt>Tyler "Ty" Kacsor</name_fmt>n</Callsign>n<Session>n<Key></Key>n<Count>8757</Count>n<SubExp>Mon Oct 16 17:48:33 2023</SubExp>n<GMTime>Sat Nov 12 16:55:21 2022</GMTime>n<Remark>cpu: 0.019s</Remark>n</Session>n</QRZDatabase>n'

你有没有试过检查榆树。text是None?当您尝试打印elm.text时会发生什么?顺便说一下,为了更python化和更好地使用Pandas,请将结果附加为None数据类型,而不是"Nope"

最新更新