2014-01-13 4 views
1

Я делаю Skype-бот, и одна из моих команд - это трассировка ip_or_website_here
Однако я вижу, что проблема связана с моими XML-ответами.

Commands.py:
Самый простой способ сортировки XML в Python? [Skype Bot]

elif msg.startswith('!trace '): 
    debug.action('!trace command executed.') 
    send(self.nick + 'Tracing IP. Please Wait...') 
    ip = msg.replace('!trace ', '', 1); 
    ipinfo = functions.traceIP(ip) 
    send('IP Information:\n'+ipinfo) 

И мой functions.py:

def traceIP(ip): 
     return urllib2.urlopen('http://freegeoip.net/xml/'+ip).read() 

Теперь, мой вопрос заключается в том, что ответы выглядеть следующим образом:

!trace skype.com 
Bot: Tracing IP. Please Wait... 
IP Information: 
<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
<Ip>91.190.216.21</Ip> 
<CountryCode>LU</CountryCode> 
<CountryName>Luxembourg</CountryName> 
<RegionCode></RegionCode> 
<RegionName></RegionName> 
<City></City> 
<ZipCode></ZipCode> 
<Latitude>49.75</Latitude> 
<Longitude>6.1667</Longitude> 
<MetroCode></MetroCode> 
<AreaCode></AreaCode> 

Теперь я хочу, чтобы он работал без XML-тегов.
Больше как это:

IP-адрес: IP
Код страны: CountryCodeHere
Страна Название: countrynamehere
и так далее.

Любая помощь будет оценена по достоинству.
Спасибо в продвинутом состоянии.

ответ

1

BeautifulSoup подходит для синтаксического разбора XML.

>>> from bs4 import BeautifulSoup 
>>> xml = urllib2.urlopen('http://freegeoip.net/xml/192.168.1.1').read() 
>>> soup = BeautifulSoup(xml) 
>>> soup.ip.text 
u'192.168.1.1' 

Или более подробно ..

#!/usr/bin/env python 
import urllib2 
from bs4 import BeautifulSoup 

ip = "192.168.1.1" 

xml = urllib2.urlopen('http://freegeoip.net/xml/' + ip).read() 

soup = BeautifulSoup(xml) 

print "IP Address: %s" % soup.ip.text 
print "Country Code: %s" % soup.countrycode.text 
print "Country Name: %s" % soup.countryname.text 

Выход:

IP Address: 192.168.1.1 
Country Code: RD 
Country Name: Reserved 

(обновлено до последней версии BeautifulSoup)

+0

Это не похоже на работу. Я получаю ошибку импорта. 'from BeautifulSoup import BeautifulSoup ImportError: Нет модуля с именем BeautifulSoup' Я использую Python 2.7 бит. – Axiom

+0

Проверьте страницу загрузки, вам необходимо загрузить и установить модуль ... http://www.crummy.com/software/BeautifulSoup/#Download – msturdy

+0

Да, я так много знаю. Я просто попытался удалить/переустановить его. По-прежнему такая же ошибка. – Axiom

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