这是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']
关于xml - XML文本提取Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33056215/