为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python 中的请求下载不完整

使用 Python 中的请求下载不完整

慕少森 2023-03-08 10:14:35
我正在关注一个我们预测空气质量指数的在线项目。为此,我们需要先获取数据,这些数据是从网站下载的。下面是作者提供的源码:import osimport timeimport requestsimport sysdef retrieve_html():    for year in range(2013,2019):        for month in range(1,13):            if(month<10):                url='http://en.tutiempo.net/climate/0{}-{}/ws-421820.html'.format(month                                                                          ,year)            else:                url='http://en.tutiempo.net/climate/{}-{}/ws-421820.html'.format(month                                                                          ,year)            texts=requests.get(url)            text_utf=texts.text.encode('utf=8')                        if not os.path.exists("Data/Html_Data/{}".format(year)):                os.makedirs("Data/Html_Data/{}".format(year))            with open("Data/Html_Data/{}/{}.html".format(year,month),"wb") as output:                output.write(text_utf)                    sys.stdout.flush()        if __name__=="__main__":    start_time=time.time()    retrieve_html()    stop_time=time.time()    print("Time taken {}".format(stop_time-start_time))这工作得很好。现在,我尝试自己编写相同的代码。这是我的代码:import osimport timeimport requestsimport sysdef retrieve_html():    for year in range(2013,2019):        for month in range(1,13):            if(month<10):                url='http://en.tutiempo.net/climate/0{}-{}/ws-421820.html'.format(month, year)            else:                url='http://en.tutiempo.net/climate/{}-{}/ws-421820.html'.format(month, year)                texts=requests.get(url)        text_utf=texts.text.encode("utf=8")                if not os.path.exists("Data/Html_Data/{}".format(year)):            os.makedirs("Data/Html_Data/{}".format(year))                with open("Data/Html_Data/{}/{}.html".format(year,month),"wb") as output:            output.write(text_utf)                sys.stdout.flush()        但每当我运行此脚本时,只会下载第 12 个月的数据,而不会下载其他月份的其余数据。我使用作者提供的代码进行了检查,它运行良好,尽管我的代码与他的代码完全相同。这真让我抓狂。谁能指出我哪里出错了?
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

它不完全一样,有不同的缩进:

//img1.sycdn.imooc.com//6407efb3000124ff16640523.jpg


查看完整回答
反对 回复 2023-03-08
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

那么,你应该缩进这个:


        texts=requests.get(url)

        text_utf=texts.text.encode("utf=8")

        

        if not os.path.exists("Data/Html_Data/{}".format(year)):

            os.makedirs("Data/Html_Data/{}".format(year))

        

        with open("Data/Html_Data/{}/{}.html".format(year,month),"wb") as output:

            output.write(text_utf)


查看完整回答
反对 回复 2023-03-08
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

代码是正确的,只是存在缩进问题。下面的代码应该在for循环的内部


texts=requests.get(url)

text_utf=texts.text.encode("utf=8")

        

if not os.path.exists("Data/Html_Data/{}".format(year)):

   os.makedirs("Data/Html_Data/{}".format(year))

        

   with open("Data/Html_Data/{}/{}.html".format(year,month),"wb") as output:

        output.write(text_utf)

而下面的代码应该在外层的for循环中


sys.stdout.flush()


查看完整回答
反对 回复 2023-03-08
  • 3 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信