Stu*_*ske 5 python datetime loops
好的,所以我对编程还比较陌生,这让我感到非常困惑。我从网站上抓取数据,并且数据每周都会更改。每当数据从2015年9月9日开始更改为最新数据时,我都希望运行我的抓取过程。
我知道如何通过每个数字(例如0909然后0910然后0911)轻松地运行此操作,但这不是我所需要的,因为这将导致服务器发出太多毫无意义的请求。
这是URL的格式 http://www.myexamplesite.com/?date=09092015
我知道很简单:
for i in range(startDate, endDate):
url = 'http://www.myexamplesite.com/?date={}'.format(i)
driver.get(url)
Run Code Online (Sandbox Code Playgroud)
但是我一直无法弄清的一件事是操纵python dateTime来准确反映网站使用的格式。
即:09092015 09162015 09232015 09302015 10072015 ... 09272017
如果所有其他方法都失败了,那么我只需要执行一次操作,这样就不会花费太长的时间来完全忽略循环,而只需手动输入我希望从中抓取的日期,然后将所有数据帧附加在一起即可。我主要对在将来可能需要更多数据的项目中如何操纵日期时间函数感到好奇。
一个良好的开始是datetime,date和timedelta对象的文档。
首先,让我们构造我们的开始日期和结束日期(今天):
>>> 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))
Run Code Online (Sandbox Code Playgroud)
现在让我们定义增量单位-一天:
>>> day = timedelta(days=1)
>>> day
datetime.timedelta(1)
Run Code Online (Sandbox Code Playgroud)
关于日期(date/ datetime)和时间增量(timedelta)的好处是,它们可以添加:
>>> start + day
datetime.date(2015, 9, 10)
Run Code Online (Sandbox Code Playgroud)
我们还可以使用format()以易于理解的形式获取该日期:
>>> "{date.day:02}{date.month:02}{date.year}".format(date=start+day)
'10092015'
Run Code Online (Sandbox Code Playgroud)
因此,当我们将所有这些放在一起时:
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
Run Code Online (Sandbox Code Playgroud)
我们得到了一个从2015-09-09今天开始到今天结束的简单迭代,增加了7天(一周):
09092015
16092015
23092015
30092015
07102015
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |