Зависимости: 1. selenium 2. chrome headless 3. chrome webdriver 4. elasticsearch 5. docker
ТЗ:
- selenium + headlessChrome: получаль страницы сайтов, навигация по ним.
- elasticsearch для хранения данных и поиска по ним.
- docker для маштабирования
Задания:
- Нужно собрать пример:
Заходим на яндекс ищем строку "суд" и первые 5 сайтов с глубиной в одну ссылку записываем в elasticsearch. elasticsearch пробуем найти адрес Все это должно запускаться в docker-контейнере.
https://github.com/elastic/elasticsearch-dsl-py https://docs.scrapy.org/en/latest/intro/tutorial.html#intro-tutorial
https://duo.com/blog/driving-headless-chrome-with-python https://github.com/ragingwind/chrome-headless-launcher https://pythondigest.ru/view/11320/ https://github.com/segment-srl/htcap
lxml, beatifulsoup используются для навигации по html, нам это не нужно. chrome из коробки дает всю работу с DOM. scrapy интересный фреймворк. нужно его посмотреть, думаю там много чего полезного будет. Например, интересная логика работы с пауками:
- их можно параллелить
- каждый будет выполнять свои действия
вообще частью получения данных из веба и поиском на странице будет заниматься selenium+chrome. Впринципе scrapy можно взять за основу логики парсинга.
elasticsearch понадобится для морфологического разбора и полнотекстового поиска среди всех данных. Т.е если selenium+chrome будет отвечать за навигацию и получение данных, то elasticsearch за первичную обработку и поиск в загруженных данных.