«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/02/24 19:04:35  №1354379 1
Добрый вечер, задался вопросом как вообще устроены большие парсеры, есть ли какое-то название у этого и какие технологии используются? Например если есть какой-то агрегатор - на чем именно пишут парсеры для него?
Ответы: >>1354495
Аноним 2019/02/24 21:10:06  №1354495 2
>>1354379

Это правильно называется "скрейперы", и как правило, абсолютно ничего сложного там нет, все элементарно:

- загружаем HTML код
- выделяем куски страницы с помощью какой-нибудь DOM-библиотеки, по имени CSS-класса, по тексту, по еще каким-то HTML-атрибутам
- выводим собранные данные в каком-нибудь формате

Если ты знаешь HTML и DOM, то это обычно элементарная задача.

Со сложными алгоритмами никто не заморачивается, так как обычно написанный вручную "скрейпер" стоит очень дешево, зачастую как 1 час работы профессионального разработчика.

Еще можно, как Телеграм, объявить конкурс и выбрать лучшее решение: https://habr.com/ru/post/438926/

Еще есть способы, когда ты берешь страницу, каким-то расширением для браузера помечаешь на ней нужные места, и оно автоматически генерирует код для скрейпинга (или, например, xpath- или CSS-выражения). Это, мне кажется, интересная идея, так как позволяет привлекать не-программистов (за меньшие деньги) к созданию скрейперов.

Но те, кому нужно заниматься скрейпингом массово, например, поисковые системы, иногда пытаются что-то придумывать: микроразметку, автоматическое выделение содержимого, итд. Простейший способ автоматического анализа - взять 2 разных страницы с сайта, сравнить и таким образом увидеть различающиеся и общие (не содержащие полезной информации) части. Я когда-то давно пробовал писать такую штуку, но там оказался огромный объем работы и я забил на нее.

http://xgu.ru/wiki/HTML_scraping

>>1354305

Какой смысл выучить один язык, забросить, и учить другой? Никакого.

Это, конечно, не значит, что не надо смотреть другие языки - полезно для расширения кругозора, или повышения своих навыков.

Но учить язык только потому, что анонимные эксперты с двача называют его "боежственным", довольно глупо. Есть такие люди, которым в принципе работать не интересно, они весь день сидят, пишут код на Си, PHP, C# или Яве, страдают, а тут рассуждают про "божественные" языки (которые точно так же им наскучат через неделю, если попросить их поучаствовать в большом, реальном проекте на них в команде, с реальным кодом, а не задачками на 500 строк).
Ответы: >>1354777
Аноним 2019/02/25 11:19:03  №1354777 3
>>1354495
>Это правильно называется "скрейперы"
Да нет, проблем с написанием его нет. Меня интересует как и на каких технологиях разворачивают крупные скрейперы а-ля momondo или другие агрегаторы. Вот допустим есть агрегатор который должен содержать актуальную информацию, то-есть нужен не только первоначальный сбор инфы с сайта но и постоянный перепарсинг сайта (не учитываем тут защиту сайтов, считаем что её нет и принимаем работу что не все сайты нужно парсить, у некоторых есть удобное API).
Можно ли использовать Apache Beam для таких целей или что-нибудь подобное? Или как вообще они устроены? Докеризированные контейнеры которые разворачиваются on purpose? Меня не сам процесс парсинга интересует (тут я имею немного опыта, писал как PHP-парсеры так и мультипоточные парсеры на selenium-js) а вот та инфраструктура которая позволяет поддерживать беспрерывную работу парсеров под большой нагрузкой и в автоматическом режиме.
Ответы: >>1354803
Аноним 2019/02/25 11:48:22  №1354803 4
>>1354777
У нас в шараге под подобное были докеры на амазоне, запускались по таймеру из дженкинс, результаты потом дампом БД пересылались в основную базу. Платили только за время работы парсеров. Но наверняка есть лучшие методы.
Ответы: >>1354827
Аноним 2019/02/25 12:19:58  №1354827 5
>>1354803
То-есть в докере генерились дампы, не было прямого взаимодействия с бд? Был какой-то микросервис отдельный который принимал дампы на импорт? Немного подробнее пожалуйста этот момент объясни.
Ответы: >>1355029
Аноним 2019/02/25 16:15:51  №1355029 6
>>1354827
Да, докер ставился на паузу через дженкинс с внешнего сервера, так что процессорное время не тратилось, когда там ничего не обрабатывалось. Парсеры забирали данные с внешних сайтов, у себя обрабатывали, во время работы на amazon aurora все промежуточные результаты хранили. В конце дамп с авроры делался и копировался на продакшн сервак и микросервис там висел, чтобы внешние парсеры запускать импорт дампов могли. Единственные сложности были с ключами в БД, которые между собой конфликтовали, но мы там потом все составные сделали основной ключ + номер парсера.
Ответы: >>1355051
Аноним 2019/02/25 16:39:13  №1355051 7
>>1355029
Благодарю, буду разбираться, ну хоть направление есть теперь