Загрузка данных


Ты работаешь с аналогичным проектом:

/home/sigma.sbrf.ru@23865613/home/work/hr-resume-scrapper-master

Задача:
Не анализировать весь проект целиком. Нужно найти только то, как в этом проекте реализовано открытие страницы/браузера/файла и получение данных.

Важно:
- Ничего не меняй.
- Ничего не удаляй.
- Ничего не запускай на изменение данных.
- Не скачивай зависимости.
- Не запускай полный сбор резюме.
- Только читай файлы и анализируй код.
- Не настаивай заранее на Playwright. Просто найди фактическую реализацию в коде.
- Все выводы подтверждай конкретными файлами, функциями и строками/фрагментами кода.
- Если чего-то нет — прямо пиши “не найдено”.

Нужно проверить файлы:

1. run_scraper.py
2. scripts/scrape_resumes.py
3. scripts/pdf_to_markdown.py
4. hr_resume_scraper.yaml.example
5. README.md
6. SKILL.md

Главный вопрос:
Как именно проект открывает страницу/браузер/файл и получает данные?

Найди и опиши:

1. Где точка входа
- Какой файл запускается первым.
- Какая функция стартует процесс.
- Как из run_scraper.py вызывается основная логика.

2. Как читается конфиг
- Как называется конфиг.
- Где он ищется.
- Какие параметры из него берутся для открытия браузера или файлов.
- Где задаётся browser.type.
- Где задаётся path_to_exe.
- Где задаётся headless.
- Где задаётся slow_mo.
- Где задаются timeout/retry/delay.

3. Как читается входной файл
- Как называется файл со ссылками.
- Какая функция его читает.
- Какой формат строк поддерживается.
- Как из строки достаётся имя и URL.

4. Как открывается браузер или страница
Найди конкретные места в коде, где есть:
- запуск браузера;
- открытие новой страницы;
- переход по URL;
- ожидание загрузки;
- получение содержимого страницы;
- клик по кнопке;
- скачивание файла.

Проверь наличие таких вызовов:
- sync_playwright
- chromium.launch
- executable_path
- new_context
- new_page
- page.goto
- wait_for_selector
- locator
- click
- expect_download
- download.save_as
- page.content

Если они есть — покажи файл, функцию и фрагмент кода.
Если чего-то нет — напиши “не найдено”.

5. Как подключается SberBrowser
- Есть ли browser.type = sberbrowser.
- Где используется path_to_exe.
- Передаётся ли executable_path.
- Есть ли специальные args для запуска браузера:
  --no-sandbox
  --disable-setuid-sandbox
  --disable-dev-shm-usage
- Можно ли использовать найденный системный путь:
  /opt/Sberbrowser/sberbrowser/sberbrowser

6. Как проект получает файл/данные
- Он получает HTML?
- Он скачивает PDF?
- Он кликает по кнопке?
- Он ждёт download?
- Где сохраняет временный файл?
- Где потом читает этот файл?

7. Как устроена конвертация
- Какой файл отвечает за конвертацию.
- Что именно конвертируется: PDF, HTML или текст.
- Какая библиотека используется.
- Как создаётся итоговый Markdown.

8. Что нам нужно перенести в adt-markdownify-meta
Новый проект находится здесь:

/home/sigma.sbrf.ru@23865613/home/work/skil-scrap/adt-markdownify-meta

Нужно сказать конкретно:
- какую функцию из старого проекта можно повторить по смыслу для открытия браузера;
- какие настройки браузера стоит перенести;
- какие args стоит добавить;
- как лучше использовать SberBrowser;
- нужно ли в нашем проекте открывать страницу через браузер и брать page.content();
- нужно ли нам скачивание файла, как в старом проекте, или для META достаточно HTML/текста страницы.

Формат ответа:

# Как в hr-resume-scrapper реализовано открытие страницы/браузера/файла

## 1. Точка входа

## 2. Чтение конфига

## 3. Чтение входных ссылок

## 4. Запуск браузера

## 5. Открытие страницы

## 6. Получение данных или скачивание файла

## 7. Конвертация в Markdown

## 8. Что можно перенести в adt-markdownify-meta

## 9. Главный вывод

В главном выводе коротко ответь:
- старый проект открывает страницу через что именно;
- нужен ли там API;
- что именно нужно повторить в новом проекте для META.