Запрос 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).
Прочитайте условия обслуживания сайта и следуйте им, чтобы избежать этой проблемы.