Задать вопрос
@gpetrov
web-программист

Как спроектировать парсер нескольких сайтов в «реальном времени» на Python?

Уважаемые коллеги! Прошу подтолкнуть в правильном направлении.

Допустим, задача такая:

сайт на Python'e содержит строку поиска, в которую пользователь может вбить произвольный текст.

Когда пользователь отправляет запрос, сайт должен спарсить последние заголовки с нескольких местных новостных сайтов, и при совпадении - вернуть пользователю текст подходящих заголовков и ссылок на соответствующие новости.


Вопрос очень общий: как подступиться к проектированию архитектуры такого приложения?


Пара более конкретных вопросов:
- если для каждого сайта будет свой небольшой скрипт-парсер, то их запускать последовательно или параллельно? Если параллельно, то как это делается?
- как (в общих чертах) реализовать отдачу результатов поиска пользователю по мере того, как сайты будут парситься?

(Очень не хватает теоретической senior'овской подготовки)

Буду благодарен за любые, в том числе общие соображения и ссылки на что-то почитать по теме!
  • Вопрос задан
  • 2430 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
Astrohas
@Astrohas
Python/Django Developer
Парсинг в реальном времени зло которое замедлить всю вашу систему. А не проще ли индексировать сайты в базу данных и от туда выдавать результаты? Можно запускать задачи парсинга например раз 10 минут, чего будет достаточно.
Параллелизм обычно делается потоками. Можно почитать тут https://habrahabr.ru/post/229767/, https://habrahabr.ru/post/78267/
.
Для организации тасков можете какую нибудь целюру использовать
Ответ написан
Комментировать
sim3x
@sim3x
Пользователь делает запрос в твою СУБД и получает данные оттуда

если для каждого сайта будет свой небольшой скрипт-парсер, то их запускать последовательно или параллельно? Если параллельно, то как это делается?
scrapy. Под каждый сайт пишем скрапер. Запускаем по расписанию. Парсинг сайтов можно разнести во времени, чтоб они не забивали ресурсы. Если долбить сайты без расписания - они могут обидется и забанить

как (в общих чертах) реализовать отдачу результатов поиска пользователю по мере того, как сайты будут парситься?
никак, такое делать не стоит. Все что на момент запроса пользователя было, то он и должен получить
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы