python错误的日期递增

时间:2018-12-23 11:57:38

标签: python web-scraping

我有问题。我用webscrapping股票网站。递增日期时出现问题。当我从2012年1月1日增至2012年12月31日时,增幅很好地达到了2012年1月31日,但是从1.10增至31.12是错误的。这是代码:

import datetime
d = datetime.date(2012,1,1)
for x in range(1,365):
    if d.day<10:
        dan = "0"+str(d.day)
    else:
        dan = d.day

    if d.month<10:
        mesec = "0"+str(d.month)
    else:
        month = str(d.month)
    leto= d.year

    print("http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1="+str(dan)+"."+str(mesec)+"."+str(leto))
    print(str(d.day)+str(d.month)+str(d.year))
    d = d + datetime.timedelta(days=1)

,2012年12月29日的输出是2012年9月29日,但所需的输出是2012年12月29日:

http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1= 2012年9月29日

所需的输出: 2012年12月29日

1 个答案:

答案 0 :(得分:1)

手动格式化日期容易出错-您更改了变量的名称-从未使用month创建URI,并且mesec保持为10,因为从未为d.month > 9重新分配。请参阅@metatoaster的评论。

使用RiggsFolly代替手动格式化:

import datetime
d = datetime.date(2012,1,1)

# avoid off-by-1 leap-year mishaps due to hardcoded days/year
while d.year < 2013:   
    # format as dd.mm.yyyy including leading 0 if need be
    dd = d.strftime("%d.%m.%Y")
    print("http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1="+dd)

    d = d + datetime.timedelta(days=1)

输出(用于d = d + datetime.timedelta(days=36)减少输出):

http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=01.01.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=06.02.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=13.03.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=18.04.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=24.05.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=29.06.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=04.08.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=09.09.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=15.10.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=20.11.2012
http://www.ljse.si/cgi-bin/jve.cgi?doc=2561&subtab=0_2&date1=26.12.2012