🇺🇸 Национальный архив США начал публиковать рассекреченные документы по делу об убийстве

🇺🇸 Национальный архив США начал публиковать рассекреченные документы по делу об убийстве Кеннеди.
👀 Попробуем в журналистику.
Допустим, что мы хотим ознакомиться с документами, которые лежат в открытом доступе.
Заходим на сайт. И видим => там больше 📄 2000 pdf файлов.
🎩 Так, что делать? Нажимать по одному файлу и скачивать? Слишком долго. А есть ли простое решение скачать всё и сразу?
В таких случаях вспоминается чудесная 🐍 Python-библиотека под названием BeautifulSoup. Не раз выручала, когда нужно было парсить новости, а RSS не цепляется.
😁 В терминале делал так:
python3 -m venv myenv
source myenv/bin/activate
pip install beautifulsoup4 requests
Создаём простенький файл 🐍 download_jfk_pdfs.py на питоне и вставляем:
import requests
from bs4 import BeautifulSoup
import os
import time
import urllib.parse
def download_pdfs(url, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
pdf_links = []
for link in soup.find_all('a'):
href = link.get('href')
if href and href.endswith('.pdf'):
pdf_links.append(href)
print(f"Найдено {len(pdf_links)} PDF-файлов")
for i, pdf_link in enumerate(pdf_links):
if not pdf_link.startswith('http'):
if pdf_link.startswith('/'):
base_url = urllib.parse.urlparse(url).netloc
pdf_link = f"https://{base_url}{pdf_link}"
else:
pdf_link = urllib.parse.urljoin(url, pdf_link)
filename = os.path.join(output_dir, os.path.basename(pdf_link))
print(f"Загрузка {i+1}/{len(pdf_links)}: {pdf_link}")
try:
pdf_response = requests.get(pdf_link)
with open(filename, 'wb') as f:
f.write(pdf_response.content)
print(f"Сохранено в {filename}")
time.sleep(2) # задержка между запросами
except Exception as e:
print(f"Ошибка при загрузке {pdf_link}: {e}")
if name == "main":
download_pdfs("https://www.archives.gov/research/jfk/release-2025", "jfk_pdfs")
сохраняем. Простой вариант скачивания всех файлов по одному.
python3 download_jfk_pdfs.py
И есть ещё гораздо быстрый способ скачивания в несколько потоков. Сюда код не поместится, поэтому выложу 🐍 отдельным файлом. Рекомендую использовать именно его.
🧠 С удивлением обнаружил, что 26.03 первое место в lmarena в категории кодинг взял 🌐 Gemini-2.5-Pro. Сложно сказать насколько он хорош. В кодинге неплох Claude Sonnet 3.7. Если немного поиграться в prompt engineering, то новостные парсеры для сайтов пишет за пару минут. Удивительно, но 28.03 в категории кодинг 1 место занял 👩💻 ChatGPT-4o-latest после свежих обнов.
🖥 Потом можно объединить все файлы (+2000) и сделать 20-30 pdf файлов через какой-нибудь 📄 Acrobat в виртуалке. Распознавание текста с помощью OCR + сжатие. Закидываем в ИИ-модельки. Читаем, анализируем, при необходимости задаём ИИ вопросы.
*Рекомендуется проводить тесты в 🗳 виртуальной среде.
✋ @Russian_OSINT