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) |
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的时间转换