Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/06/16 в 10:02 |
Подскажите, чем лучше парсить DOM элемены?
И что для этого нужно, в том смысле, что на локалке стоит WAMPSERVER, есть cURL, можно парсить и вытаскивать, то что нужно регулярками, но как я понял работать с DOM более удобно.
|
|
|
|
127.0.0.1
С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557
|
Добавлено: 02/06/16 в 11:35 |
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/06/16 в 12:01 |
|
|
|
|
С нами с 06.07.15
Сообщения: 110
Рейтинг: 171
|
Добавлено: 02/06/16 в 21:36 |
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 03/06/16 в 08:10 |
Мельком просматривал, но я так понял это что-то дополнительно нужно подключать, так в чистом виде код не работает.
Цитата: | Fatal error: Call to undefined function str_get_html() |
|
|
|
|
С нами с 25.12.14
Сообщения: 602
Рейтинг: 441
|
Добавлено: 03/06/16 в 08:16 |
Lexikon писал: | Мельком просматривал, но я так понял это что-то дополнительно нужно подключать, так в чистом виде код не работает. |
ну так парсер по ссылке и надо подключить
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 13/08/16 в 20:07 |
Но вот как спарсить с помощью DOMDocument, тэг с классом?
Как пример:
Код: | <div class="index">text</div> |
если бы было
Код: | <div id="index">text</div> |
то тогда можно было бы использовать getElementById.
А как же поступать имея class="index" ?
|
|
|
|
С нами с 25.12.14
Сообщения: 602
Рейтинг: 441
|
Добавлено: 13/08/16 в 20:23 |
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 13/08/16 в 21:05 |
Благодарю!
Думаю, что http://simplehtmldom.sourceforge.net/ при массовом парсинге и с большим кол-вом элементов, то что нужно, а когда нужно дернуть что-то определенное, можно и что-то по проще. Но в любом случае благодарю!
|
|
|
|
С нами с 07.08.16
Сообщения: 12
Рейтинг: 11
|
Добавлено: 13/08/16 в 23:49 |
Simplexml попробуйте, просто и понятно.
|
|
|
|
Любитель хорошего ;)
С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269
|
Добавлено: 14/08/16 в 00:12 |
nokogiri охуенен.
Задачу "дёрнуть что-то определённое" решает в одну строчку.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 14/08/16 в 08:50 |
если имя класса будет состоять из двух параметров, к примеру
Код: | <div class="left index">.....<div> |
то такой класс не принимается, на выходе имеем пустой массив, приходится писать .left и тогда приходится уже откидавать всё лишнее, получается весь смысл парсинга в одну строку теряется.
PS: но если использовать
Код: | $saw->get('div[class=left index]')->toArray(); |
работает так как надо.
Но как быть с кодировкой, если в DOMDocument я делал так
[code ]$dom = new DOMDocument;
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));[/code]
то как быть тут?
PS: прописал это в самом файле с кодом nokogiri и всё гуд!
Т.е.
Код: | $this->loadHtml($htmlString); |
заменил на
Код: | $this->loadHtml(mb_convert_encoding($htmlString, 'HTML-ENTITIES', 'UTF-8')); |
Последний раз редактировалось: Lexikon (14/08/16 в 09:49), всего редактировалось 4 раз(а)
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 14/08/16 в 09:03 |
Та же проблема что и в nokogiri, указана постом выше.
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 14/08/16 в 11:11 |
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
8
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 14/08/16 в 11:37 |
|
|
|
|
С нами с 09.08.12
Сообщения: 185
Рейтинг: 378
|
Добавлено: 17/08/16 в 07:56 |
DOM (php функции для работы с ним) сам посебе ничего такого в плане парсинга не предоставляет. с ним только проблемы с кодировкой и невалидным html
https://github.com/technosophos/querypath
парсить через запросы в виде через css-селекторов намного удобнее.
а так и регулярки тоже весьма не плохи - если речь про парсинг каких то небольших участков данных - глобально и надежно.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 17/08/16 в 08:03 |
rickdeckard писал: | DOM (php функции для работы с ним) сам посебе ничего такого в плане парсинга не предоставляет. с ним только проблемы с кодировкой и невалидным html
https://github.com/technosophos/querypath
парсить через запросы в виде через css-селекторов намного удобнее.
а так и регулярки тоже весьма не плохи - если речь про парсинг каких то небольших участков данных - глобально и надежно. |
Благодарю! Но пока из всего, что тестировал понравился "nokogiri", отлично всё выдает в массиве, причем можно, как большую часть дерева DOM получить массивом, так и определенный элемент, управляя селекторами.
Сам же класс DOMDocument, не всегда может удовлетворить потребности, ну а с проблемами кодировки я столкнулся и в "nokogiri" но исправил это как и в самим классе DOMDocument.
Когда в свое время искал реализацию парсинга одной проблемной части HTML кода, мне как раз и сказали про DOM, поэтому отказался от регулярок.
|
|
|
|