2015-10-10 4 views
2

Это API адр -Xml текст экстракцию питон

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) 

Любой, пожалуйста, помогите на этом

ответ

0

Обратите внимание, что XML, а также XPath являются чувствительны к регистру, так «доступен» никогда не бывает то же, что и «Доступно» в этом контексте.

Еще одна вещь, которую нужно исправить - это одна косая черта в начале вашего 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'] 
+0

Он работал. Спасибо .. Но в чем разница между html.fromstring и etree.fromstring? –

Смежные вопросы