2015-10-28 2 views
-1

Я не уверен, возникают проблемы разобрать этот ответ:Как разобрать XML с помощью BeautifulSoap?

<DadosEstoque> 
     <ProtocoloEstoque>45ccd004-4c89-4c73</ProtocoloEstoque> 
     <CodigoProduto>000197</CodigoProduto> 
    </DadosEstoque> 
    <DadosEstoque> 
     <ProtocoloEstoque>45ccd01212</ProtocoloEstoque> 
     <CodigoProduto>000200</CodigoProduto> 
    </DadosEstoque> 

Python:

r = requests.post("http://......asmx/EstoquesDisponiveis", data = {"ChaveIdentificacao":"XXXX-XXXX-XXXX-XXXX"}) 
    soup = BeautifulSoup(r.text) 
    for abbr in soup.findAll('CodigoProduto'): 
     productcode = abbr.string 

I Want: печать 'CodigoProduto:' + ProductCode

Python не возвращает ничего ... NO OUTPUT.

ОБНОВЛЕНИЕ !!! Решено

import urllib2 
from xml.dom import minidom 

usock = urllib2.urlopen('http://ws......') 
xmldoc = minidom.parse(usock) 

staffs = xmldoc.getElementsByTagName("DadosEstoque") 
for staff in staffs: 
     sku = staff.getElementsByTagName("CodigoProduto")[0] 
     protocolo = staff.getElementsByTagName("ProtocoloEstoque")[0] 
     print("SKU: %s" % (sku.firstChild.data)) 
     print("PROTOCOLO: %s" % (protocolo.firstChild.data)) 
+0

Как насчет того, чтобы вы изменили его на 'soup = BeautifulSoup (r.text," xml ")'? – alecxe

+0

print r.text показывает xml, но с BeautifulSoup (r.text, "xml") я получаю сообщение об ошибке: AttributeError: объект 'str' не имеет атрибута 'text'. – user2925795

ответ

0

Решил мою проблему, основанную на этом предмете 1, 2. Thx ребята!

import urllib2 
from xml.dom import minidom 

usock = urllib2.urlopen('http://ws......') 
xmldoc = minidom.parse(usock) 

staffs = xmldoc.getElementsByTagName("DadosEstoque") 
for staff in staffs: 
     sku = staff.getElementsByTagName("CodigoProduto")[0] 
     protocolo = staff.getElementsByTagName("ProtocoloEstoque")[0] 
     print("SKU: %s" % (sku.firstChild.data)) 
     print("PROTOCOLO: %s" % (protocolo.firstChild.data)) 
0

Вы передаете файл XML в HTML-парсер. Вам нужно предоставить XML-парсер. Если LXML установлены, то следующий должен работать:

>>> soup = BeautifulSoup(r.text, "xml") 
>>> soup.findAll('CodigoProduto') 
[<CodigoProduto>000197</CodigoProduto>] 

Для получения дополнительной информации о BeautifulSoup анализаторах, просто check the help.

+0

print r.text показывает xml, но с помощью BeautifulSoup (r.text, "xml") я получаю сообщение об ошибке: AttributeError: объект 'str' не имеет атрибута 'text'. – user2925795

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