Feedparser不起作用,给出了AttributeError

时间:2016-08-09 02:30:26

标签: python google-app-engine feedparser

我有这段代码:

import jinja2
import webapp2
import os
from google.appengine.ext import db
import feedparser
from xml.dom import minidom
from google.appengine.api import memcache

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)

class News(db.Model):
    title = db.StringProperty(required=True)
    description = db.StringProperty(required=True)
    url = db.StringProperty(required=True)
    imageurl = db.StringProperty(required=True)

feeds = [   'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=e&ict=ln&output=rss'   # Entertainment
        'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=snc&ict=ln&output=rss' # Science
        'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=s&ict=ln&output=rss'   # Sports
        'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=b&ict=ln&output=rss'   # Business
        'https://news.google.co.in/news/section?cf=all&pz=1&ned=in&topic=tc&ict=ln&output=rss'  # Technology
]

def render_str(template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.write(feedparser.__file__)
        self.response.write(render_str('mainpage.html'))

class Entertainment(webapp2.RequestHandler):
    def get(self):
        rssfeed = feedparser.parse(feeds[0])
        self.response.write(rsfeed.entries[0].title)
        self.response.write(rsfeed.entries[0].link)
        self.response.write(rsfeed.entries[0].published)
        self.response.write(rsfeed.entries[0].description)


app = webapp2.WSGIApplication([('/', MainPage),
                           ('/entertainment', Entertainment)
                            ], debug = True)

mainpage.html除了五个<p></p>标记外,没有任何内容,其中一个标记已超链接到/entertainment

当我运行它并点击超链接的段落时,我得到了这个

AttributeError: 'module' object has no attribute 'parse'

我已关注this question,这就是我在get MainPage打印出文件路径的原因。

我的文件夹结构是:

  • 模板

    • mainpage.html
  • 的app.yaml

  • feedparser.py

  • newsapp.py

  • newsapp.pyc

第一次运行它时,feedparser指向C:\Users\IBM_ADMIN\Downloads\7c\News Aggregator GAE\feedparser.pyc。这是错误的,所以我删除了.pyc文件,然后指向C:\Users\IBM_ADMIN\Downloads\7c\News Aggregator GAE\feedparser.py。但它仍然给出了相同的错误,并再次生成.pyc文件。我知道它是生成的,因为我正在编译feedparser文件,但为什么feedparser模块指向该位置?我怎样才能解决这个错误?

1 个答案:

答案 0 :(得分:0)

GAE应用程序代码不一定能够作为独立应用程序运行。

在本地执行它的正确方法是通过SDK的本地开发服务器,请参阅Using the Local Development Server

本地开发服务器将正确设置执行环境,以便不会意外地到达应用程序之外的模块。它应该解决您的导入问题。