2 |
GMT_FORMAT = '%M %H %d %m %w' |
3 |
datetime.datetime.utcnow().strftime(GMT_FORMAT) |
4 |
CORN_FORMAT = '%M %H %d %m %w' |
5 |
datetime.datetime.utcnow().strftime(CORN_FORMAT) |
操作系统:fedora 开发语言:python 爬虫框架:scrapy 数据库:mysql 数据库连接模块:mysqldb 将网页生成时间和网页抓取的当前时间输入到数据库中。 在执行代码时,出现Warning: Out of range value for column ‘f_grap_time’ at row 1这样的错误。直接翻译是,数据位数超过字段能存的最大长度。
问题原因:
事实上是数据格式的问题。上传时数据直接调用了网页http头的Date和time函数返回的时间。但是数据库要求是datetime格式。 抓下的网页的 response.headers[“Date”]保存了网页的生成时间,读取出来其实就是字符串。格式类似这样“Wed, 04 Jun 2014 13:06:02 GMT’。 使用time函数得出的时间是一个浮点数,类似“1401887801.07” 数据库要求的输入格式是datetime格式,可以是11位的10进制数字,或者“2014-06-04 13:06:02“形式的字符串。
解决方法:
2 |
GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT' |
4 |
TIME = 'Wed, 04 Jun 2014 13:06:02 GMT' |
6 |
datetime.datetime.strptime(TIME, GMT_FORMAT) |
2 |
datetime.datetime.now() |
PS:
3 |
GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT' |
4 |
datetime.datetime.utcnow().strftime(GMT_FORMAT) |
python的时间格式化输出对照表:
说明 |
符号 |
星期几的简写 Weekday name, abbr. |
%a |
星期几的全称 Weekday name, full |
%A |
月份的简写 Month name, abbr. |
%b |
月份的全称 Month name, full |
%B |
标准的日期的时间串 Complete date and time representation |
%c |
十进制表示的每月的第几天 Day of the month |
%d |
24小时制的小时 Hour (24-hour clock) |
%H |
12小时制的小时 Hour (12-hour clock) |
%I |
十进制表示的每年的第几天 Day of the year |
%j |
十进制表示的月份 Month number |
%m |
十时制表示的分钟数 Minute number |
%M |
十进制的秒数 Second number |
%S |
第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday) |
%U |
十进制表示的星期几(值从0到6,星期天为0)weekday number |
%w |
每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday) |
%W |
标准的日期串 Complete date representation (e.g. 13/01/08) |
%x |
标准的时间串 Complete time representation (e.g. 17:02:10) |
%X |
不带世纪的十进制年份(值从0到99)Year number within century |
%y |
带世纪部分的十制年份 Year number |
%Y |
时区名称,如果不能得到时区名称则返回空字符。Name of time zone |
%z,%Z |
百分号 |
%% |
转载请注明:旅途@KryptosX » scrapy笔记——python的时间转换