Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2009 20:04:15

wizard
От:
Зарегистрирован: 2009-02-04
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml

Здравствуйте, помогите распарсить xml

<data>
<bot_ips>
<ip>77.91.226.131</ip>
<ip>77.91.226.130</ip>
<ip>86.111.22.107</ip>
<ip>88.208.19.9</ip>
<ip>77.91.226.135</ip>
<ip>77.91.226.133</ip>
<ip>77.91.226.151</ip>
<ip>206.161.193.2</ip>
<ip>207.226.178.210</ip>
<ip>77.91.226.180</ip>
<ip>77.91.228.36</ip>
<ip>77.91.226.136</ip>
</bot_ips>
<config>
<item name="after_text"></item>
<item name="delimiter">;</item>
<item name="before_text"></item>
<item name="end"><!--e63638c8--></item>
<item name="start"><!--e63638c8--></item>
</config>
<pages>
<page url="/tag/aqua_snezhok/">
<level>2</level>
<link>
<a href="http://ffff133.cn/" target="_blank">www.ffff133.cn</a>
</link>
</page>
<page url="/tag/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0/">
<level>2</level>
<link>
<a href="http://ffff089.cn/" target="_blank">ppp</a>
</link>
</page>
</pages>
</data>
У меня получаеться вот такой код
from xml.etree import ElementTree as ET
import urllib

def find_text(element):
if element.text is None:
for subelement in element:
for txt in find_text(subelement):
yield txt

else:
yield element.text

feed = urllib.urlopen("http://127.0.0.1/DEFAULT.xml")
try:
tree = ET.parse(feed)

except Exception, inst:
print "Unexpected error opening %s: %s" % (tree, inst)

root = tree.getroot()

for txt in find_text(root):
print txt



Офлайн

#2 Март 6, 2009 20:18:25

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Парсинг xml

А вопрос-то в чём?

Офлайн

#3 Март 6, 2009 20:21:15

wizard
От:
Зарегистрирован: 2009-02-04
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml

сори, как переделать его так чтобы он выводил

/tag/aqua_snezhok/ 2 <a href="http://ffff133.cn/“ target=”_blank“>www.ffff133.cn</a>
/tag/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0/ 2 <a href=”http://ffff089.cn/“ target=”_blank">ppp</a>



Офлайн

#4 Март 7, 2009 13:27:51

wizard
От:
Зарегистрирован: 2009-02-04
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml

Разобрался :) всё оказалось очень просто

from xml.etree import ElementTree as ET

root = ET.parse('xml.xml).getroot()
for element in root.findall('pages/page/'):
print element.attrib["url"]
for link in element.findall('link/'):
print link.text
for level in element.findall('level/'):
print level.text
теперь остался вопрос, как сделать из %D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0 сделать человеческий русский?



Офлайн

#5 Март 7, 2009 14:00:12

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Парсинг xml

import urllib
s='%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0'
print urllib.unquote(s)



Офлайн

#6 Март 7, 2009 23:31:04

wizard
От:
Зарегистрирован: 2009-02-04
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml

igor.kaist
import urllib
s='%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0'
print urllib.unquote(s)
Спасибо большое, помогло.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version