我正在开展一个项目,在这个项目中我搜索了许多博客,并将选择的数据保存到SQLite
数据库。例如帖子的标题,发布的日期以及帖子的内容。
最终的目标是进行一些花哨的文本分析,但是现在我将数据写入数据库时遇到了问题。
我使用Python的库模式。 (可以找到关于数据库的模块here)
我现在正忙着第三篇博客。来自其他两个博客的数据已经保存在数据库中,对于第三个类似结构的博客,我调整了代码。
有几个功能很好地相互集成,它们工作正常。我也能以正确的方式访问所有数据,当我在IPython Notebook中试用它时它工作正常。当我在控制台中仅为一个博客页面(它共有43个)运行代码作为试用版时,它也可以在数据库中很好地保存所有内容。但是,当我再次运行43页时,它引发了数据错误。
现在我在函数中有一些注释和打印语句用于调试。问题似乎发生在函数parse_post_info
中,该函数将字典传递给遍历所有博客页面的函数并打开每个帖子,然后保存函数parse_post_info
返回的字典 IF 它不是None,但我认为它是空的,因为有关日期格式的内容出错了。
另外 - 为什么代码工作一次,相同的代码第二次抛出dateerror:
DateError:'2015-06-09T07:01:55 + 00:00'的未知日期格式
这是功能:
from pattern.db import Database, field, pk, date, STRING, INTEGER, BOOLEAN, DATE, NOW, TEXT, TableError, PRIMARY, eq, all
from pattern.web import URL, Element, DOM, plaintext
def parse_post_info(p):
""" This function receives a post Element from the post list and
returns a dictionary with post url, post title, labels, date.
"""
try:
post_header = p("header.entry-header")[0]
title_tag = post_header("a < h1")[0]
post_title = plaintext(title_tag.content)
print post_title
post_url = title_tag("a")[0].href
date_tag = post_header("div.entry-meta")[0]
post_date = plaintext(date_tag("time")[0].datetime).split("T")[0]
#post_date = date(post_date_text)
print post_date
post_id = int(((p).id).split("-")[-1])
post_content = get_post_content(post_url)
labels = " "
print labels
return dict(blog_no=blog_no,
post_title=post_title,
post_url=post_url,
post_date=post_date,
post_id=post_id,
labels=labels,
post_content=post_content
)
except:
pass
答案 0 :(得分:0)
date()函数返回一个新的Date,一个方便的Python的datetime.datetime子类。它需要一个整数(Unix时间戳),一个字符串或现在。
您可以使用当地时间进行差异化。
格式为“YYYY-MM-DD hh:mm:ss”。
可以找到转换时间格式here