Сведения о вопросе

SOON

19:24, 19th August, 2020

Теги

HTML    

открытые html-парсеры?

Просмотров: 270   Ответов: 7

Для распарсивания html использую libxml2. В общем устраивает, но хочется что-нибудь побыстрее.
Смотрел некоторые опенсорсные поисковики (Xapian, Dataparksearch) — у них свои собственные парсеры. Разбираться с их исходниками и адаптировать под свои нужды — еще не созрел, хотя уже близко к тому.
Не знает ли кто другие открытые парсеры, более легкие и шустрые, чем libxml2? Мне ни Гугл, ни Яндекс помочь не смогли. Возможно не так спрашивал.



  Сведения об ответе

prince

13:45, 12th August, 2020

Почему бы не воспользоваться регулярными выражениями, если нужно всего лишь вытащить куски страницы? Получение заголовка — /(\w+)<\/title>/gi, сбор ссылок — что-то типа /<a[^>]*href="([^>"]*)"[^>]*>(\w+)<\/a>/gi (правда, эта регулярка не работает, если в тексте ссылки есть еще теги). Посидеть, поломать мозг над ними… и наверное, заработает.


  Сведения об ответе

SILA

17:16, 17th August, 2020

сбор всех ссылок со страницы в виде


а это разве не одной регуляркой делается?


  Сведения об ответе

PAGE

23:30, 12th August, 2020

Быстрее чем если писать парсер заточенный под конкретную цель самостоятельно вряд ли выйдет.
У Вас какая-то очень специфическая и сложная задача, что вы используете libxml? Может конечно это у меня руки кривые, но сколько не пытался им парсить сложные XML, каждый раз понимал, что ручками и быстрее и надежней:)


  Сведения об ответе

SSESION

17:54, 7th August, 2020

возможно вас заинтересует simplehtmldom.sourceforge.net


  Сведения об ответе

ITSME

00:37, 28th August, 2020

phpquery обладает большим функционалом но не совсем то по скорости. Лучше приводить HTML в XML и обрабатывать при помощи XSLT. Скорость работы думаю вполне удовлетворит.


  Сведения об ответе

SKY

05:01, 25th August, 2020

Можете посмотреть в сторону Mechanize.


  Сведения об ответе

ITSME

07:41, 5th August, 2020

Тоже интересуют парсеры. Вроде эти могут подойти - Grab, Scrapy или PHP HTML DOM парсер


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться