Pull to refresh

Comments 27

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

Это верно. По ссылкам тоже инструменты не менее удобные. Статью об этом нет желания написать? :-)

Когда требовалось, делал аналогично. XPath удобный вариант + достаточный быстрый на sax парсере.

На заре появления крупных интернет сайтов делал преобразование XML -> SQL с помощью XSLT :) Удовольствие то еще, но очень надежно и долго работало.

Нормально придумано - откручивать крестообразный шуруп плоской отверткой.

DOM - это ведь та же NoSQL база данных, где данные хранятся не линейно, а как матрешка, и доступ к ним удобно получать по цепочке, а не как из плоской таблицы.

А кто ж будет спорить, что теги вложены друг в друга как матрёшка? Когда интересует структура у документа, а не только сами данные, htmlSQL не подходит.

Когда по-быстрому нужны сами данные - вполне подходит. Например, цель: выбрать все картинки в документе.

Если нужны все картинки, nosql запрос выглядит более лаконично: "img".

Если нужны картинки с классом, то "img.classname".

Если в SQL варианте нет даже join - все равно не понимаю, зачем это нужно.

Конечно лаконичней, с этим не поспорить. Впрочем, "SELECT src FROM img" тоже умещается в одну строчку.

Крипово, но почему бы и нет?

Надо еще чутка причесать (хоть как-то к PSR привести) и оформить в композер пакетом :)

Connect делается напрямую к URL. А если надо через прокси?

Такой функциональности нет (в явном виде). Сам curl, разумеется, имеет ключ:

--proxy 11.22.33.44:5555 -U username:password

Значит можно допилить. Я, вероятно, этим займусь, когда руки дойдут. За одно избавлюсь от вызова exec() - лучше использовать функции расширения.

Как допилите — свистните?

Я почему спрашиваю? Когда-то тоже парсил кое-какую инфу с другого сайта. Сначала напрямую по HTTP. Потом по HTTPS, когда он на него перешел. По HTTP через прокси тоже получалось. А вот через HTTPS через прокси — не срослось.

Я бы хоть посмотрел — ЧЯДНТ?

Хорошо! Примеры есть, где можно потестировать, но всегда нужно искать время :-)

Не ищи для этого какие-то либы 1999 года в этот раз)) Cмотри сразу PSR7 совместимые, Guzzle например, тогда твое решение будет совместимо с миром, независимо от ОС и окружения

Кстати, так возможно и будет :-) Для редких задач я часто выбираю какой-то новый для себя инструмент. Правда, новым он может быть только для меня.

Статьи (и новости) я взял не все, а только на самые холиварные темы.
Ценные комментарии — прежняя фишка хабра — ушли в прошлое. Котиков и
маникюр в комментариях ещё не обсуждают, но исходный код и образцы конфигов
из комментариев почти исчезли
В холиварных темах их никогда и не было. Новости же это 146% мусор для подмахивания власти. Там самое интересное — посмотреть, какое дно на этот раз пробила «информационная служба Хабра».

Основные изменения кармы происходят в комментариях, а не в результате публикаций*.
Капитан Очевидность, вы вернулись! Ура!

По теме:

Данные проще вытянуть из JSON-ов, которыми обмазана «новая версия» Хабрахабра.

Например, вы: sepetov
Или я: Maccimo

Если всё же парсить HTML, то разбить скачивание HTML и его парсинг на отдельные фазы и поискать для своего любимого ЯП аналог JSOUP. Это удобнее, чем SQL в данном случае.

Красиво. Чем-то похоже на phpQuery.

JSON - это хорошо, но на нужном мне сайте ничего нет (он из статичного html, периодически обновляется каким-то генератором).

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

Увы, кажется Хабр иначе не работает, зачастую вижу пользователей с большим количеством кармы и без статей, которые намеренно стараются писать псевдо-интеллектуальные провокационные комментарии.

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

Но без статей карма не может быть выше 4. Исключение - если потом просто убрать свои публикации в черновики. Хотя в какой-то мере 4 - это тоже много, но хотя бы в минус не даёт голосовать и сливать оппонентов чисто из личной неприязни.

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

Спасибо, что вы это прочитали!

Спасибо. Давно во время чтения статей на хабре не улыбался.

У меня ещё имеется черновик статьи в похожем стиле, но опубликую не скоро - нехватка свободного времени :-)

Несколько раз сталкивался с подобной задачей - сначала использовал старичка phpQuery, но в какой то момент наткнулся на компонент из симфони - DomCrawler. У нее чуть больше функционала, чем просто парсить контент, но с этим она справляется на ура.

Парсить DOM структуру можно как с помощью xpath, так и css селекторов

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

Большинство пользователей с высокой кармой весьма немногословны,

скорее всего чтобы не сказать лишнего и не лишиться её части :)

Приятно читать грамотное изложение специалиста с хорошим чувством юмора! С удовольствием прошелся по материалу и даже захотелось провести рефакторинг кода :)

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

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

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

Так ["замыкается круг"] и рождается сообщество фантомных, но весьма добрых и отзывчивых комментаторов с отрицательной кармой. Ибо сила не в объеме мозоли на нижней чакре (кол-ве часов, проведенных на Хабре), а в том, какая среда тебя изрыгнула (воспитала). А это уже прямая отсылка к Макаренко, Выготскому, Ленину и Крупской. Вот и корень проблемы: многие думают, что воспитание и обучение ни на что не влияют, а они влияют и еще как. На историю влияют и на поведение комментаторов и многое объясняют и даже прогнозируют [для маркетинга, например].

Но больше всего беспокоит то, что сообщество в итоге теряет действительно содержательную аудиторию. Вы думаете, это я - про социум? Нет. Это я - к переменной "х" [громко и уверенно произносить: "ха"], в которой немец привык хранить кол-во просмотренных фильмов.

Идея перевода из функционала в декларацию того, что весьма хорошо смотрится в функционале, на мой взгляд, успешно сработала пока только 2 раза в истории IT, и то - в первом случае - благодаря реляционной алгебре, которая до сих пор рулит. Да так успешно, - что даже в те самые реляционные СУБД вскоре после выхода в свет поспешили внедрить функции и триггеры, хотя и опять же в декларативном стиле. Ну и создание форм в "1С" и SAP тоже декларативное. Но претензия не к стилю занесения алгоритма, а к кол-ву часов выработки в обоих случаях.

Часто проще бывает написать малюсенький скрипт для какой-то ерунды, и он работает. В корпоративной среде "толстое" ПО обслуживает коллектив не менее толстых ученых. Где найти ту золотую середину, чтобы написать несложную библиотеку с огромным функционалом? И декларативный подход здесь как раз будет камнем преткновения. Для корпоративного сектора он пойдет. А для "хоум видео" надо каждый раз быстро вспоминать, как оперативно передергивать рукоять у нужной функции, ибо редко пользуешься. Поэтому они должны быть малюсенькие, но весьма эластичные [хавать должны все подряд].

Как по мне, так в таких штуках должны быть анализаторы структуры страниц [DOM-модели], чтобы можно было провести автоматизированный первичный скорый анализ, а потом уже приступать к уверенному соскабливанию данных ножовкой по DOM-дереву. А еще неплохо было бы добавить автомат с Колой, чтобы попивать прохладительные напитки, пока система парсит, и свежий журнал "Хакер".

Sign up to leave a comment.

Articles