Случайно поврежденные файлы pdf при использовании requests.get () с Python для загрузки pdf

Спасибо, что прочитали мой пост. У меня есть список URL-адресов для файлов PDF.

      for eachurl in url_list:
    print(eachurl)

Ниже приведены ссылки на мои PDF-файлы:

https://www.sec.gov/Archives/edgar/data/1005757/999999999715000035/filename1.pdfhttps://www.sec.gov/Archives/edgar/data/1037760/999999999715000162/filename1.pdfhttps: // www.sec.gov/Archives/edgar/data/1038133/999999999715000169/filename1.pdfhttps://www.sec.gov/Archives/edgar/data/1009626/999999999715000483/filename1.pdfhttps: //www.sec. gov / Archives / edgar / data / 1017491/999999999715000518 / filename1.pdfhttps://www.sec.gov/Archives/edgar/data/1020214/999999999715000557/filename1.pdfhttps://www.sec.gov/Archives/ edgar / data / 1020214/999999999715000795 / filename1.pdf

Эти семь ссылок работают отлично, если я вручную нажимаю на них и загружаю файл pdf. Однако, если я использую коды Python для их загрузки, возникает случайная ошибка. Иногда первый PDF-файл поврежден и не может быть открыт. Когда-то. это второй или третий и т. д.

      from pathlib import Path
import requests
n_files = 0
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169'}
for eachurl in url_list:
    n_files += 1
    response = requests.get(eachurl, headers=headers)
    filename = Path(str(n_files) + '.pdf')
    filename.write_bytes(response.content)

Не могли бы вы помочь мне понять, почему это происходит?


Обновление: я загрузил эти файлы на Google Диск, и, наконец, выяснил, что это потому, что SEC идентифицирует меня как робота. Я добавил заголовки. Есть идеи, как это обойти?Гугл драйв

1 ответ

В вашем коде нет ничего плохого. Просто веб-сайт, с которого вы загружаете PDF-документы, обнаруживает, что вы используете автоматизированный инструмент, и вместо того, чтобы предоставить вам PDF-файл, как обычно, он возвращает html-страницу, информирующую вас о вышеизложенном.

Ваш запрос исходит от необъявленного автоматизированного инструмента

Чтобы обеспечить равный доступ для всех пользователей, SEC оставляет за собой право ограничивать запросы, исходящие от необъявленных автоматизированных инструментов. Ваш запрос был идентифицирован как часть сети автоматизированных инструментов за пределами допустимой политики и будет обрабатываться до тех пор, пока не будут приняты меры по объявлению вашего трафика.

Заявите о своем трафике, обновив свой пользовательский агент, включив в него информацию о компании.

Чтобы узнать о передовых методах эффективной загрузки информации с SEC.gov, в том числе о последних документах EDGAR, посетите sec.gov/developer. Вы также можете подписаться на рассылку обновлений по электронной почте о программе открытых данных SEC, включая передовые методы, которые делают загрузку данных более эффективной, и улучшения SEC.gov, которые могут повлиять на процессы загрузки по сценариям. Для получения дополнительной информации обращайтесь по адресу opendata@sec.gov.

Для получения дополнительной информации см. Политику конфиденциальности и безопасности веб-сайта SEC. Благодарим вас за интерес к Комиссии по ценным бумагам и биржам США.

Идентификатор ссылки: 0.2420b07b.1629818487.2ac196c

Больше информации

Политика Интернет-безопасности

Используя этот сайт, вы соглашаетесь на мониторинг и аудит безопасности. В целях безопасности и обеспечения того, чтобы общедоступная услуга оставалась доступной для пользователей, эта правительственная компьютерная система использует программы для мониторинга сетевого трафика для выявления несанкционированных попыток загрузки или изменения информации или иного причинения ущерба, включая попытки отказать пользователям в обслуживании.

Несанкционированные попытки загрузить информацию и / или изменить информацию в любой части этого сайта строго запрещены и подлежат судебному преследованию в соответствии с Законом о компьютерном мошенничестве и злоупотреблениях 1986 года и Законом о защите национальной информационной инфраструктуры 1996 года (см. Раздел 18 USC §§ 1001 и 1030).

Чтобы обеспечить хорошую работу нашего веб-сайта для всех пользователей, SEC отслеживает частоту запросов на контент SEC.gov, чтобы гарантировать, что автоматический поиск не влияет на возможность доступа других лиц к контенту SEC.gov. Мы оставляем за собой право блокировать IP-адреса, которые отправляют чрезмерные запросы. Текущие правила ограничивают пользователей до 10 запросов в секунду, независимо от количества машин, используемых для отправки запросов.

Если пользователь или приложение отправляет более 10 запросов в секунду, дальнейшие запросы с IP-адреса (-ов) могут быть ограничены на короткий период. Как только количество запросов упадет ниже порогового значения на 10 минут, пользователь может возобновить доступ к контенту на SEC.gov. Эта практика SEC предназначена для ограничения чрезмерного автоматического поиска на SEC.gov и не предназначена и не ожидается, чтобы повлиять на людей, просматривающих веб-сайт SEC.gov.

Обратите внимание, что эта политика может измениться, поскольку SEC управляет SEC.gov, чтобы гарантировать, что веб-сайт работает эффективно и остается доступным для всех пользователей.


Примечание. Мы не предлагаем техническую поддержку для разработки или отладки процессов загрузки по сценарию.

РЕШЕНИЕ

Удалите заголовки, похоже, после этого все работает нормально.

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