这是指向具有其他API提供的ID的API的链接,它应该可以工作,但目前不起作用,因为他们没有为它建立索引。问题是链接返回200和xml的空根。
我是Python的新手,但是基本上问题是ID返回一个空的XML根,响应为200,我可以看到它确实返回了一些东西,但为空,而Elementtree给了我错误:
带有response.text:
try:
xml = r.text
if xml:
root = ElementTree.parse(xml)
except ElementTree.ParseError:
,出现错误: FileNotFoundError:[错误2]没有这样的文件或目录:'\ n \ n \ n'
并尝试作为字节:
try:
xml = r.content
if xml:
root = ElementTree.fromstring(xml)
except ElementTree.ParseError:
,出现错误: TypeError:解析器必须是字符串或字符流,而不是NoneType
我似乎无法触发捕获,因为它总是200。在解析之前如何检查xml的有效性/存在性?
我有成千上万的文档要解析,并且此错误将其全部破坏。
答案 0 :(得分:0)
尝试这样的事情:
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...