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']
这是 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']