【问题标题】:Get data from webpages with Python使用 Python 从网页中获取数据
【发布时间】:2013-04-27 09:10:35
【问题描述】:

希望使用 Python 从特定网站获取数据以上传到 Google App Engine。这个想法是创建一个数据库数据来存储服务器上的信息,以便在 Web 应用程序中检索和显示。

  from google.appengine.ext import webapp
  from google.appengine.ext.webapp.util import run_wsgi_app
  from google.appengine.ext import db
  import os
  import datetime
  from google.appengine.ext.webapp import template


 # A class which creates all the pokemon on the server
 class Pokemondata(db.Model):
 number = db.IntegerProperty()
 pokemonname = db.StringProperty()
 description = db.StringProperty()

 newpoke = Pokemondata(number="001",pokemonname="Balbasuar",description="The grass       pokemon")
 newpoke = Pokemondata(number="002",pokemonname="Ivysaur",description="The seed pokemon")
 newpoke = Pokemondata(number="003",pokemonname="Venasaur",description="Another grass pokemon")
 newpoke.put()

  # A class to put new pokemon in to the server ?
 class ApplyHandler(webapp.RequestHandler):
   def post(self):
   self.session = Session()
   pnumber = self.request.get('number')
   pname = self.request.get('pokemonname')
   pdescription = self.request.get('description')

    newpoke = Pokemondata(number=pnumber,pokemonname=pname,description=pdescription)
newpoke.put()
    self.session['pokemon'] = pname
     doRender(self,"board.htm",{})

  # Construct a google table for this data
  # to display
  class JSONInterface(webapp.RequestHandler):
    def get(self):
      que = db.Query(Pokemondata)
      listing = que.fetch(limit = 12)
      doRender(self,'http://pokedexapp.appspot.com/?user=cater54321@gmail.com#input',
        {'listing':listing})


   application = webapp.WSGIApplication([('/(.*html)?', ApplyHandler),
     ('/json', JSONInterface)], debug=True)


  def main():
     run_wsgi_app(application)
     if __name__ == "__main__":
         main()

当我部署应用程序进行测试时,我收到了服务器错误。谁能告诉我这是否是朝着正确方向迈出的一步以及需要修改什么?

当前的yaml文件是

应用程序:pokedexapp 版本:1 运行时:蟒蛇 api_version: 1

处理程序: - 网址:/.* 脚本:main.py

【问题讨论】:

  • 我理解代码缩进是错误的。我目前正在尝试修复它
  • 您想发布您遇到的错误。
  • 你能发布 .yaml 文件吗?我在这里看到一些错误,您在处理程序中使用的 MainHandler、JSONInterface、SearchResult 类在哪里?
  • 我对代码做了一些修改并添加了yaml文件的内容。

标签: python database google-app-engine web-applications


【解决方案1】:
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
import os
import datetime
from google.appengine.ext.webapp import template

# A class which creates all the pokemon on the server
class Pokemondata(db.Model):
    def get(self):
        pokemonname = db.StringProperty()
        newpoke = Pokemondata(pokemonname="Balbasuar")
        newpoke.put()

class JSONInterface(webapp.RequestHandler):

    def post(self):
        pkmname = self.request.get('pokemonname')
        callback = self.request.get('callback')
        # This line makes the Message object...
        pkmname  = Pokemondata(pokemonname=pkmname)
        # This one pushes it to the database (a Big-Table)...
        pkmname.put()
        self.response.out.write(getJSONMessages(callback))

    def get(self):
        callback = self.request.get('callback')
        self.response.out.write(getJSONMessages(callback))

【讨论】:

    【解决方案2】:
    from google.appengine.ext import db
    
    # A class which creates all the pokemon on the server
    class Pokemondata(db.Model):
    pokemonname = db.StringProperty()
    
    newpoke = Pokemondata(pokemonname="Balbasuar")
    newpoke.put()
    
    class JSONInterface(webapp.RequestHandler): 
        def post(self):
            pkmname = self.request.get('pokemonname')
            callback = self.request.get('callback')
            # This line makes the Message object...
            pkmname  = Pokemondata(pokemonname=pkmname)
            # This one pushes it to the database (a Big-Table)...
            pkmname.put()
            self.response.out.write(getJSONMessages(callback))
    
        def get(self):
            callback = self.request.get('callback')
            self.response.out.write(getJSONMessages(callback))
    

    【讨论】:

      【解决方案3】:
      from google.appengine.ext import db
      from google.appengine.ext import webapp
      from google.appengine.ext.webapp import template
      # A class which creates all the pokemon on the server
      class Pokemondata(db.Model):
      number = db.IntegerProperty()
      pokemonname = db.StringProperty()
      description = db.StringProperty()
      
      
      def post(self):
      self.session = Session()
      pnumber = self.request.get('number')
      pname = self.request.get('pokemonname')
      pdescription = self.request.get('description')
      
      
      newpoke = Pokemondata(number=pnumber,pokemonname=pname,description=pdescription)
      newpoke.put()
      self.session['pokemon'] = pname
      doRender(self,"board.htm",{})
      
      
      Page = """
      <html manifest="my.manifest">
      <head>
             <!--  All the js and css header links go here -->
      </head>
      <body>
            <!-- all the needed HTML markup -->
      
            <!-- if there is a place you would need to embed values (e.g. a user name), just use %s in its place, e.g. -->
      <h1>%s's App Engine App</h>
            <!-- you can now do a string substitution for the each %s (in order) - see end… 
      </body>
      </html>
         """       
      
      
      # A class to get / put pokemon in to the server ?
      class ApplyHandler(webapp.RequestHandler):
          def post(self):
              self.session = Session()
          pnumber = self.request.get('number')
          pname = self.request.get('pokemonname')
          pdescription = self.request.get('description')
      
          newpoke = Pokemondata(number=pnumber,pokemonname=pname,description=pdescription)
          newpoke.put()
          self.session['pokemon'] = pname
          doRender(self,"board.htm",{})
      
      # Construct a google big ass table for this data
      # to display
      
          def get(self):
              que = db.Query(Pokemondata)
          listing = que.fetch(limit = 12)
          doRender(self,'http://pokedexapp.appspot.com/?user=cater54321@gmail.com#input',
                   {'listing':listing})    
      
         #self.response.out.write( page % "Fred Bloggs")
         # This is standard Google App Engine stuff - create a WSGI application
         # framework and set up the routing between URIs and Handlers...
      application = webapp.WSGIApplication([('/', Pokemondata),
                                               ('/json', JSONInterface)], debug=True)
      def Addlist():
          run_wsgi_app(application)
      
      if __name__ == "__Addlist__":
          main()
         code here
      

      【讨论】:

      • 这个例子应该做什么?
      • 该示例应该获取在代码中创建的数据并将其发布到服务器...... Html 已被省略以格式化输出,但它只是显示数据库条目结果的问题跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多