2016-07-07 3 views
0

Я работаю на начальной стадии личного проекта загрузки 10-Q-заявлений от EDGAR. Быстрая оговорка, я очень новичок в программировании и питоне, поэтому код, который я написал, очень простой, даже не используя пользовательские функции и классы, просто очень длинный сценарий, который мне удобнее редактировать. В результате некоторые решения довольно грубые (например, объединение URL-адресов с использованием CIK и других параметров поиска вместо запросов с заголовками «браузер»)Скребок Эдгара с регулярными выражениями Python

У меня проблема с тем, что могут быть знакомы те, у кого есть царапины EDGAR. Время от времени мой скрипт просто перестает работать. Он не вызывает никаких исключений (я создал некоторые, которые добавляют txt-отчеты со ссылками, которые невозможно открыть и т. Д.). Я подозреваю, что на серверах SEC есть определенный предел запросов от IP за определенный промежуток времени (если я жду некоторое время после CTRL-C'-скрипта и запустил его снова, он генерирует больше выходных данных по сравнению с быстрой повторной активацией) , альтернативно это может быть TWC, которая идентифицирует меня как бота и ограничивает такие запросы.

Если это SEC, что потенциально может работать? Я пытался научиться работать с TOR и иногда получать новый IP-адрес, но я не могу найти какой-то основной учебник, который бы работал на моем уровне знаний. Может быть, кто-то может порекомендовать что-то хорошее по этой теме?

Возможно, таймеры будут работать? Как заставить скрипт спать каждый час или около того (все еще пытаюсь выяснить, как сделать такие таймеры и сбросить их, если произойдет событие). Главная проблема с этой конкретной проблемой заключается в том, что я не могу позволить ей работать ночью.

Заранее спасибо за любые советы, я продолжать бороться с ним в течение нескольких дней, и на данном этапе это может занять меня больше месяца, чтобы получить то, что я хочу (прежде чем я даже приступить к решению 10-Ks)

ответ

0

Похоже, что задержки очень полезны - сидя на 3,5 тыс. Загрузок без перерывов:

import(time) 

time.sleep(random.randint(0, 1) + abs(random.normalvariate(0, 0.2)))