前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【爬虫军火库】生成指定日期间的日期列表

【爬虫军火库】生成指定日期间的日期列表

作者头像
不二小段
发布2018-04-08 11:58:43
1.3K0
发布2018-04-08 11:58:43
举报
文章被收录于专栏:不二小段不二小段

今天没能空下来时间写太多,所以只简单记录一个很具体的需求:

指定了起止日期,如何生成一个日期列表。

这个需求是我之前在抓取一个环保的历史数据时遇到的:

如图,在这个页面上,我们需要手动通过日期控件选择日期,点击查询后,浏览器会向服务器发出POST请求,而POST的数据便是这一天的日期格式。

因此,假如我们需要自动化大量抓取数据,就需要实现生成指定日期间的日期列表。

当时尝试了许多办法,都感觉不太方便,最后是这么实现的(源自知乎某位匿名用户的回答)

代码语言:javascript
复制
import datetime
def datelist(start, end):
    start_date = datetime.date(*start)
    end_date = datetime.date(*end)
    result = []
    curr_date = start_date
      while curr_date != end_date:
        result.append("%04d-%02d-%02d" % (curr_date.year, curr_date.month, curr_date.day))
        curr_date += datetime.timedelta(1)
    result.append("%04d-%02d-%02d" % (curr_date.year, curr_date.month, curr_date.day))
    return result
print(datelist((2013, 2, 27), (2013, 3, 3)))

后来又遇到别人写的解法,更加简洁明了。(https://www.zhihu.com/question/35455996/answer/152161065):

代码语言:javascript
复制
import pandas as pd
from datetime import datetime
def datelist(beginDate, endDate):
    # beginDate, endDate是形如‘20160601’的字符串或datetime格式
    date_l=[datetime.strftime(x,'%Y-%m-%d') for x in list(pd.date_range(start=beginDate, end=endDate))]
    return date_l
print(datelist(20130206, 20130303))

分享给大家,以备遇到相似需求。

查看当时环保数据爬虫的详情:https://www.zhihu.com/question/41136540/answer/89765276

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不二小段 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档