Ты работаешь в проекте:
/home/sigma.sbrf.ru@23865613/home/work/skil-scrap/adt-markdownify-meta
Контекст:
Мы проанализировали аналогичный проект hr-resume-scrapper-master.
Вывод анализа:
1. Старый проект открывает страницы через браузер:
sync_playwright -> chromium.launch -> new_context -> new_page -> page.goto
2. API не используется.
3. Для Linux-среды старый проект использует browser args:
--no-sandbox
--disable-setuid-sandbox
--disable-dev-shm-usage
4. В системе найден SberBrowser:
/opt/Sberbrowser/sberbrowser/sberbrowser
5. Старый проект не скачивает PDF напрямую, а получает HTML/текст из браузера.
6. Для META нам достаточно page.content(), потому что нужно выгружать HTML/текст страницы в Markdown.
Задача:
Аккуратно доработать проект adt-markdownify-meta по аналогии со старым проектом.
Важно:
- Не добавляй API.
- Не добавляй endpoint-ы.
- Не добавляй requests/httpx/aiohttp/urllib.
- Не добавляй token, cookie, login, password.
- Не меняй общую структуру проекта.
- Не запускай полный scraping.
- Не устанавливай зависимости.
- Сейчас только правки файлов.
Нужно изменить только 2 файла:
1. meta_exporter.yaml.example
2. scripts/scrape_meta.py
Файл 1: meta_exporter.yaml.example
Нужно в browser добавить путь к SberBrowser:
browser:
type: "sberbrowser"
path_to_exe: "/opt/Sberbrowser/sberbrowser/sberbrowser"
В browser_settings добавить args:
browser_settings:
headless: false
slow_mo: 1000
viewport_width: 1920
viewport_height: 1080
wait_until: "domcontentloaded"
page_load_timeout: 60000
args:
- "--no-sandbox"
- "--disable-setuid-sandbox"
- "--disable-dev-shm-usage"
Важно:
- wait_until поставь "domcontentloaded", как в старом проекте.
- Не используй networkidle по умолчанию, потому что META может быть тяжёлым SPA-приложением и долго держать сетевую активность.
Файл 2: scripts/scrape_meta.py
Нужно доработать функцию launch_browser(playwright, config: dict).
Сейчас она запускает браузер только с headless и slow_mo.
Нужно сделать так:
1. Прочитать browser_settings.args из конфига.
2. Сформировать browser_options:
browser_options = {
"headless": headless,
"slow_mo": slow_mo,
"args": args,
}
3. Если browser.type == "sberbrowser":
- взять browser.path_to_exe;
- если путь пустой, выбросить ValueError;
- добавить browser_options["executable_path"] = path_to_exe;
- запустить playwright.chromium.launch(**browser_options)
4. Если browser.type == "chromium":
- запустить playwright.chromium.launch(**browser_options)
5. Если browser.type неизвестный:
- выбросить ValueError.
6. Не меняй остальную логику export_meta без необходимости.
После правок покажи:
1. полный файл meta_exporter.yaml.example;
2. полный файл scripts/scrape_meta.py;
3. кратко напиши, что именно изменено.