Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将博客内容导出到JSON?_Python_Json_Google App Engine - Fatal编程技术网

Python 如何将博客内容导出到JSON?

Python 如何将博客内容导出到JSON?,python,json,google-app-engine,Python,Json,Google App Engine,我正在写博客,同时学习网络开发。我想了解更多关于JSON的信息,所以我尝试实现一种方法,将我博客的全部内容导出到JSON和更高版本的XML。在这个过程中,我遇到了很多问题,其中最大的一个问题是获取我希望动态呈现为JSON/XML的页面url。我的网站的代码可以找到。我仍然需要更多的评论,我必须实现很多功能。负责将内容导出为JSON的主要类如下: class JSONHandler(BaseHandler): #TODO: get a way to gt the url from the requ

我正在写博客,同时学习网络开发。我想了解更多关于JSON的信息,所以我尝试实现一种方法,将我博客的全部内容导出到JSON和更高版本的XML。在这个过程中,我遇到了很多问题,其中最大的一个问题是获取我希望动态呈现为JSON/XML的页面url。我的网站的代码可以找到。我仍然需要更多的评论,我必须实现很多功能。负责将内容导出为JSON的主要类如下:

class JSONHandler(BaseHandler):
#TODO: get a way to gt the url from the request
def get(self):
    self.response.headers['Content-Type'] = 'application/json'
    url = "http://www.bigb-myapp.appspot.com/blog" 
    #url = self.request.path_url
    logging.info(url)
    page = urllib2.urlopen(url).read()
    soup = BeautifulSoup(page)
    subject_list = []
    day_list = []
    content_list = []

    subjects = soup.findAll('div', {'class' : 'subject-title'})
    days = soup.findAll('div', {'class' : 'day'})
    contents = soup.findAll('div', {'class' : 'post'})

    for subject in subjects:
        subject_list.append(subject.findAll(text = True))

    for day in days:
        day_list.append(day.findAll(text = True))

    for content in contents:
        content_list.append(content.findAll(text = True))

    i = 0

    for s, d, c in subject_list, day_list, content_list:
        json_text = json.dumps({'subject': s[i][i],'day': d[i][i], 'content': c[i][i]})
        i += 1

    self.write(json_text)
我也确信打印功能是错误的,但这是容易的部分。正如我所说,获取url被证明是一个很大的困难

我试图从环境变量中获取url,而且我也厌倦了webapp2的请求处理程序,例如
self.request.path\u url
,但没有成功

我正在使用谷歌应用程序引擎,并使用jinja2模板引擎


谢谢。

self.request.url
self.request.path
应该可以。 但是,更好的方法是使用类似于permalink部分中使用的方法。只需从请求中解析post id。这意味着您应该将JSONHandler分为两部分处理:a)返回整个博客,b)返回单个帖子

我还建议不要使用这种方法来获取博客帖子。。。在Mainpage类中,您使用GQL做得如此优雅,那么为什么要使用urllib2和BeautifulSoup呢

至于最后一个关于回答的问题。。正确的方法是:
self.response.out.write(“某物”)

编辑以添加:
我的意思是将JSONHandler分为两部分,这样将有两个处理程序:
('/blog/(\d+).json',PermalinkJSONHandler),
('/blog.json',FullJSONHandler),…


两者应该差不多(甚至使用相同的函数转储json),只是使用不同的GQL来获得正确的信息。

你所说的“最大的一个是获取我想要动态呈现为json/XML的页面的url”是什么意思?@LaszloPapp我刚刚编辑了这个问题,内容更加详细。我的意思是我不想硬编码url,而是想从请求中获取它。但事实证明这很困难。我之所以想要这个,是因为我的主页和permalink页面都有类似的模板,所以我也可以使用同一个类将这些页面导出到JSON。这当然为初学者打开了很多选择,也提出了一些问题,我将如何拆分JSONHandler?我会想一想,再次感谢。
self.write
实际上是一个函数,它使用的正是,
self.response.out.write
@Bhargav,为了输出JSON中的内容,请使用它:@Lipis我现在就可以工作了,我为JSON制作了两个处理程序,按照他在编辑中提到的那样工作,输出JSON从来都不是问题。谢谢你的帮助