迭代python

时间:2017-09-27 18:48:20

标签: python loops datetime

好吧所以我对编程比较陌生,这让我非常难过。我从网站上抓取数据并且数据每周都在变化。每次数据从2015年9月9日开始变化并运行到当前时,我想运行我的抓取过程。

我知道如何通过0909然后0910然后0911轻松运行每个数字,但这不是我需要的,因为这将要求来自服务器的太多请求毫无意义。

以下是网址的格式 http://www.myexamplesite.com/?date=09092015

我知道这很简单:

for i in range(startDate, endDate):
    url = 'http://www.myexamplesite.com/?date={}'.format(i)
    driver.get(url)

但是,我从未弄清楚的一件事就是操纵pythons dateTime来准确反映网站使用的格式。

即: 09092015 09162015 09232015 09302015 10072015 ... 09272017

如果所有其他方法都失败了,我只需要这样做一次,因此完全忽略循环并且只需手动输入我希望从中删除的日期然后只需将所有数据框附加在一起就不会花太长时间。我主要想知道如何在未来可能需要更多数据的项目中操纵日期时间功能。

2 个答案:

答案 0 :(得分:4)

一个好的起点是datetimedatetimedelta个对象文档。

首先,让我们构建我们的开始日期和结束日期(今天):

>>> from datetime import date, timedelta
>>> start = date(2015, 9, 9)
>>> end = date.today()
>>> start, end
(datetime.date(2015, 9, 9), datetime.date(2017, 9, 27))

现在让我们定义增量单位 - 一天:

>>> day = timedelta(days=1)
>>> day
datetime.timedelta(1)

关于日期(date / datetime)和时间增量(timedelta)的一个好处是它们可以添加:

>>> start + day
datetime.date(2015, 9, 10)

我们也可以使用format()以人类可读的形式获取该日期:

>>> "{date.day:02}{date.month:02}{date.year}".format(date=start+day)
'10092015'

所以,当我们把所有这些放在一起时:

from datetime import date, timedelta

start = date(2015, 9, 9)
end = date.today()
week = timedelta(days=7)

mydate = start
while mydate < end:
    print("{date.day:02}{date.month:02}{date.year}".format(date=mydate))
    mydate += week

我们在以2015-09-09开头并以今天结束的日期进行简单迭代,增加7天(一周):

09092015
16092015
23092015
30092015
07102015
...

答案 1 :(得分:1)

看看这里

https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

您可以在此处查看表格,了解格式化日期和时间以及使用情况。

当然,如果日期的格式在将来发生变化,或者您要解析不同的字符串,则必须进行代码更改。真的没有办法解决这个问题。