Запрос Python, используемый для загрузки файла.csv, был заблокирован, однако я мог вручную щелкнуть его для загрузки из Интернета.

Это мой код:

              import requests
              import time
              from datetime import timedelta, date

              uls = []
              ul_endpoint = 'https://marketplace.spp.org/file- 
              api/download/da-binding-constraints?path='

              def daterange(start_date, end_date):
                  for n in range(int ((end_date - start_date).days)):
                      yield start_date + timedelta(n)

              start_date = date(2018, 1, 1)
              end_date = date(2018, 3, 9) 

              for single_date in daterange(start_date, end_date):
                  y = single_date.strftime('%Y')    
                  m = single_date.strftime('%m') 
                  ymd = single_date.strftime('%Y%m%d')  
                  designator1 = 'DA'
                  designator2 = 'BC'
                  ul_head = ['']+[y]+[m]+['By_Day']+['']
                  fn = [designator1]+[designator2]+[ymd+'0100.csv']
                  ul_parm = '%2F'.join(ul_head)
                  fn = '-'.join(fn)
                  ul = ul_endpoint+ul_parm+fn
                  uls.append({'fn': fn, 'ul': ul})  

              import warnings
              warnings.filterwarnings('ignore')

              t = time.time()
              for item in uls:
                  t0 = time.time()
                  fn = item['fn']
                  ul = item['ul']
                  r = requests.get(ul, verify=False)
                  data = r.text
                  with open('data' + '/'+fn, "w") as fw:
                  fw.write(data)`
                  print('%s completed, time elapsed: %.2f' % (fn, time.time
                  ()-t0))     
                  print('%d files downloaded, total time elapsed: %.2f' % 
                  (len(uls), time.time()-t))

Оно работает!! Однако, если я запустлю его несколько раз, например, пять или шесть, он заблокирует запрос, например: образ

Я считаю, что мой метод не хорош. Кто-то мог бы показать мне лучшие методы?

1 ответ

Вы должны проанализировать ответ HTTP-код (r.status_code) понять, почему сайт назначения делает то, что делает. Вполне вероятно, что, неоднократно обращаясь к нему без промедления, вы превышаете лимит их запросов (HTTP-код 429).

Прочитайте условия обслуживания сайта и следуйте им, чтобы избежать этой проблемы.

Другие вопросы по тегам