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

时间:2022-05-07
本文章向大家介绍【爬虫军火库】生成指定日期间的日期列表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

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

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

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

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

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):

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