Xml 文本提取 python

Xml text extracting python

这是 API URl -

https://api.dynadot.com/api3.xml?key=26T8F9U8t8Fj6e8m6172p80849H8GN8i6m8O7U7pC7u&command=search&domain0=000.com

当我使用

发出 Http 请求时
requests.get('https://api.dynadot.com/api3.xml?key=26T8F9U8t8Fj6e8m6172p80849H8GN8i6m8O7U7pC7u&command=search&domain0=000.com')

我得到 XML 响应:-

<Results><SearchResponse><SearchHeader><SuccessCode>0</SuccessCode><DomainName>000.com</DomainName><Status>success</Status><Available>no</Available></SearchHeader></SearchResponse></Results>

我想提取每个元素,我该怎么做,我不想使用正则表达式库。我正在尝试使用 lxml 库,但它不起作用:-

url = 'https://api.dynadot.com/api3.xml?key=26T8F9U8t8Fj6e8m6172p80849H8GN8i6m8O7U7pC7u&command=search&domain0='+each1
r = requests.get(url)
print r.text
source = html.fromstring(r.content)
available = source.xpath('/available/text()')
print available
print "For %s availability is %r" %(each1, available)

任何人都请帮助

请注意 XML 和 XPath 区分大小写,因此 'available' 永远不会相同作为 'Available' 在这种情况下。

另一个需要修复的问题是 XPath 开头的单斜杠。用双斜杠(descendant-or-self 轴的缩写)替换它,就像 //Available/text() 一样,或者使用从根到目标元素的完整路径 /Results/SearchResponse/SearchHeader/Available/text().

完整的工作演示示例:

from lxml import etree

content = '''<Results>
   <SearchResponse>
      <SearchHeader>
         <SuccessCode>0</SuccessCode>
         <DomainName>000.com</DomainName>
         <Status>success</Status>
         <Available>no</Available>
      </SearchHeader>
   </SearchResponse>
</Results>'''
source = etree.fromstring(content)
available = source.xpath('//Available/text()')
print(available)

输出:

['no']