请求 returns 200 但 ElementTree 无法解析空根

Requests returns 200 but ElementTree fails to parse empty root

这是 link 到 API 的 API,它的 ID 由另一个 API 提供,它应该可以工作,但目前没有,因为他们没有为它编制索引。问题是 link returns 200 和 xml 的空根。

xml link

我是 Python 的新手,但基本上问题是 ID return 是一个空的 XML 根,响应是 200,我可以看到它 return 一些东西但是空的,Elementtree 给我错误:

与 response.text:

try:
    xml = r.text
    if xml:
        root = ElementTree.parse(xml)
except ElementTree.ParseError:

有错误: FileNotFoundError:[Errno 2] 没有这样的文件或目录:'\n\n\n'

并且还尝试了字节:

try:
    xml = r.content
    if xml:
        root = ElementTree.fromstring(xml)
except ElementTree.ParseError:

有错误: TypeError: Parser 必须是字符串或字符流,不能是 NoneType

我似乎无法触发捕获,因为它总是 200。如何在解析之前检查 xml 的 validity/existence?

我有数以千计的文档要解析,这个错误让一切都崩溃了。

尝试这样的事情:

url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=32277197&rettype=abstract"
import requests

from lxml import etree
resp = requests.get(url)

doc = etree.XML(resp.content)

floor = doc.xpath('count(//*)')
if floor < 3: #or whatever
     print("I'm outta here...")

编辑: 或者用 XML:

import xml.etree.ElementTree as ET
doc = ET.fromstring(resp.text)
floor = doc.findall(".//")
if len(floor) < 3:
    print("I'm outta here...")

输出:

I'm outta here...