LINUX.ORG.RU

На каком языке лучше писать парсеры?

 , ,


0

1

Здравствуйте.

Нужно сделать парсер который сайт очень быстро мог обойти, подскажите на каком языке лучше его писать? Думала на php, но вроде как я понимаю это плохая идея, сможете ещё объяснить мне почему php плох для парсеров?

ОС: ubuntu


Я не знаю - сможешь ли ты когда-нибудь написать парсер, но мой ты уже сломал...

yyk ★★★★★
()

попробуй питон. там несложный синтаксис + есть готовые библиотеки, которые могут что тебе нужно

chenbr0
()

Не хочешь пхп - пиши на перле. С регекспом там более чем в порядке.
Или что вообще имелось ввиду?

hbars ★★★★★
()

На чём удобно, на том и пиши. Регулярки есть везде, обход dom тоже. Я использовал hxselect (https://www.w3.org/Tools/HTML-XML-utils/) с башем для этого дела, т.к. удобно смотреть выхлоп и вообще с пайпами работать, вместо кодинга с итерациями и всякими вонючими либами.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

Нужно сделать парсер который сайт очень быстро мог обойти

Прежде чем писать парсер нужно хотя бы понять, что узкое место в парсинге интернет-сайтов - скорость отдачи контента сайтом.

Deleted
()
Ответ на: комментарий от hbars

Хотела на php, но мне сказали что он работает в 1 поток и из-за этого будет очень медленно парсится сайт.

jessgt
() автор топика
Ответ на: комментарий от jessgt

Проблема в том, что для асинхронного/многопоточного парсера надо организовывать какую-то очередь данных. Обычно берут какую-то бд. Лучше взять готовый фреймворк для парсеров.

Shadow ★★★★★
()

Думала на php, но вроде как я понимаю это плохая идея, сможете ещё объяснить мне почему php плох для парсеров?

В смысле, «я сама придумала, что он плохой, а вы объясните мне, почему?»

Alve ★★★★★
()
Ответ на: комментарий от Alve

нененене, выше я писала что мне сказали что php плохо подходит, т.к. он медленный и работает в 1 поток

jessgt
() автор топика

Это скраппер, а не парсер. Ищем удобную либу для любого языка и вперёд.

Вангую питон.

RazrFalcon ★★★★★
()

На любом языке общего назначения. Что из языков ты знаешь, кроме PHP?

Deleted
()
Ответ на: комментарий от hbars

Не надо городить пул в памяти же. Быстрее в разработке.

Shadow ★★★★★
()
Ответ на: комментарий от jessgt

но мне сказали что он работает в 1 поток и из-за этого будет очень медленно парсится сайт.

А вы уверены, что тот кого вы собираетесь парсить будет рад нагрузке от вашего парсера в N-потоков?

Чтиво на подумать: https://en.wikipedia.org/wiki/Robots_exclusion_standard#Crawl-delay_directive

Deleted
()

javascript, ибо к нему куча инструментов по разбору любых сайтов с подключением браузеров в нескольких вариантах, на пхп ты далеко не уедешь

umren ★★★★★
()
Ответ на: комментарий от jessgt

Ну так и что бы не взять например https://www.npmjs.com/package/node-html-parser ? Единственная проблема которую видно сразу -

For this reason, some malformatted HTML may not be able to parse correctly, but most usual errors are covered (eg. HTML4 style no closing <li>, <td> etc).

Deleted
()

на каком языке лучше его писать?

На котором умеешь писать код.

на php, но вроде как я понимаю это плохая идея

PHP мало чем отличается от других языков по основной сути. Его ругают, но код на нём всё же работает.

сможете ещё объяснить мне почему php плох для парсеров?

Это нужно спрашивать у тех, кто заявляет, что «PHP плох для парсеров».

Для PHP рекомендую взять http://simplehtmldom.sourceforge.net/ (хотя я других библиотек и не пробовал вообще-то). Для Python — https://www.crummy.com/software/BeautifulSoup/bs4/doc/, запускать под PyPy.

i-rinat ★★★★★
()

почему php плох для парсеров

Ни почему не плох. Не хуже, чем любая другая скриптота. Бери любой асинхронный фреймворк и вперёд, к победе коммунизма.

no-such-file ★★★★★
()
Ответ на: комментарий от jessgt

мне сказали что php плохо подходит, т.к. он медленный и работает в 1 поток

Тебя обманули.

no-such-file ★★★★★
()

Ну если у тебя вообще есть понимание того как пишутся парсеры, то наверное должна понимать что разницы особой нет. Какой язык тебе привычней на том и пиши. cURL, регулярки и прочий инструментарий есть везде (на самом деле нет, но это не важно).

schizoid89
()

Парсеры для стандартных форматов вообще писать не нужно, они есть готовые. А PHP плох вообще для всего.

slovazap ★★★★★
()

Не важно, что за ЯП или библиотека, главное, чтобы chrome headless.

Deleted
()

который сайт очень быстро мог обойти

Какой сайт и насколько быстро

goingUp ★★★★★
()

А мог бы уже сделать. Чем тебя нода не устроила? Твоя задача сводится к пониманию структуры представления на сайте и поиску xpath, если искомые элементы типа ссылок «далее» промаркированы, то вообще всё просто.

Бери scrappy, если питона не знаешь. Там по-моему можно без проблем headless браузер прикрутить для джаваскрипта, но процессинг жс это ресурсоёмко будет.

anonymous
()

На том, что знаешь. Библиотеки разбора HTML есть везде.

И не называй разбор HTML «парсингом»

tailgunner ★★★★★
()

Парсилку html в php можно запросто написать, если регекспами парсить.

anonymous
()
Ответ на: комментарий от tailgunner

Мало ли о чем там дегенераты пишут, их там много и пишут они достаточно. С помощью регекспов, которые КА разбора регулярных грамматик, можно распарсить все, что угодно.

ПХП медленный, если автомат разбора руками по символьно, а если на основе регекспов его сделать и из ПХП им управлять и никаких особых тормозов разбора не будет.

anonymous
()
Ответ на: комментарий от anonymous

Мало ли о чем там дегенераты пишут, их там много

Здесь тоже есть.

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

Тонко.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Самокритично, даже я бы сказал, неожиданно. Хвалю.

anonymous
()

https://kaitai.io/

Kaitai Struct, про него на ЛОРе были новости. Описываешь формат в декларативном виде и генерируешь парсер под язык, который тебе нравится (если он поддерживается Kaitai Struct).

Pravorskyi ★★★
()

Няшная растишечка же!

Rust для парсеров идеален.

anonymous
()
Ответ на: комментарий от grem

Конечно нет, в 99% случаев тебе не придутся использовать регулярки никак. Ну и потом, парсить регулярками html, это такое себе. Даже если они достаточно быстрые, профит будет убит тем что там по 10000 циклов разборов на каждом предложении.

anonymous
()

Рекомендую Perl5. Язык был специально создан для обработки данных. Существует множество готовых библиотек и даже программ — для разных форматов, например. Беспрецедентная поддержка UNICODE. Позиционируется как максимально приближенный к естественному (английскому) языку синтаксис, поэтому, помимо всего прочего, множество интуитивно понятных примеров конструкций. Те же регулярные выражения возникли как стандарт именно из развития Perl5, в который они очень гармонично встроены.

Infra_HDC ★★★★★
()

Ragel. Дальше можешь использовать любой другой язык для обработки напаршеного.

xpahos ★★★★★
()
Ответ на: комментарий от anonymous

Не заметил, что там речь именно о сайте :(

grem ★★★★★
()
Ответ на: комментарий от jessgt

Берешь paralell и качаешь хоть во сколько хочешь потоков. Потом cat page1.html | hxnormalize | hxselect <css_selector> | perl -pe "/regexp/" | grep | sed | ... | perl -pe "..." >> profit.txt Кода минимум и ничего знать не надо вообще, кроме регулярок и css селекторов. Но парсинг это такое дело, что каждую новую задачу будешь решать разными средствами. Где-то хватит curl, а где-то нужен selenium. Где-то можно hxselect | регулярками, а где-то есть нормальный api и можно обойтись jq / нодой.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 6)

который сайт очень быстро мог обойти

Тебя забанят или просто сервер положишь (а это уже уголовка, особенно для детей в рядах Навального), если будешь сайты быстро обходить. Если хочешь быстро, то прежде задайся вопросом где взять охапку проксей по дешевке.

на каком языке лучше его писать?

На джаве с нормальной IDE.

сможете ещё объяснить мне почему php плох для парсеров?

Парсер это не рокетсайнс, его хоть на баше может делать, поэтому пхп сойдет. Главное то не ЯП, а хорошая библиотека под это дело. Найдешь хорошую библиотеку, с хорошей документацией - считай пол дела сделано.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.