Я пытаюсь прочитать XML из мира оружия Warcraft (да, я один из них) - URL, такой как this , возвращает XML в Firefox (вам нужно просмотреть увидеть это), но не в других браузерах, таких как Chrome (что я не совсем понимаю, почему - хотя это в стороне).
В любом случае у меня есть этот код, который прекрасно работает, когда я запускаю приложение локально, но сейчас я перехожу на Google App Engine, это не так, и я не знаю почему. Но, похоже, не удается получить XML. Я использовал Beautiful Coup для анализа xml в полном коде.
import urllib2,urllib
import socket
from BeautifulSoup import BeautifulStoneSoup
class Object:
def __init__(self):
self.data = {}
self.userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
def _getXml(self):
strFile = ""
try:
url = "http://eu.wowarmory.com/guild-info.xml?r=dentarg&n=penance"
values = {}
headers = { 'User-Agent' : self.userAgent }
data = urllib.urlencode(values)
socket.setdefaulttimeout(2)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
strFile = response.read()
except Exception, e:
raise e
finally:
return strFile
def getObject(self):
soup = BeautifulStoneSoup( self._getXml() )
return soup.guildheader["faction"]
Вот основной раздел:
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from library import Object
class MainHandler(webapp.RequestHandler):
def get(self):
test = Object().getObject()
self.response.out.write(test)
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
Я упростил код, чтобы попытаться лучше проиллюстрировать проблему. Буду очень признателен за любую помощь.