我想從魔獸世界的武器庫中讀取一些xml(是的,我就是其中之一) - 諸如this這樣的url返回Firefox中的xml(您需要查看源代碼來查看它),但在其他瀏覽器(例如Chrome)中卻沒有(我不完全明白爲什麼 - 儘管這是擱置)。使用Google App Engine和Python閱讀網站XML
無論如何,我有這個代碼,當我在本地運行應用程序時工作正常,但現在我正在遷移到谷歌應用程序引擎,它不是,我不知道爲什麼。但它似乎無法獲取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()
我已經簡化了代碼,試圖更好地說明問題。我非常感謝任何幫助。
你可能有一個錯誤信息在管理控制檯的「日誌」頁面的某處。請在SO上發佈。 – 2011-03-08 20:09:21
回溯(最近通話最後): 文件「/Users/colmbrophy/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py 「,第515行,在__call__ 文件」/ Users/colmbrophy/Code/Python/Google App Engine/Test/main.py「,第47行,獲取 self.response.out.write(soup.guildheader [」派「]) TypeError:'NoneType'對象不可訂閱 – Colm 2011-03-08 20:16:50
事實上,它沒有找到任何東西,這是爲什麼我認爲它完全無法抓住XML。 – Colm 2011-03-08 20:19:18