Maxim
Ребят, кто работал с phpquery?
Евгений
это который парсер?
Maxim
да
Евгений
ну нормальный в принципе, простой
Миша
Ну что, квартирные одуванчики, займёмся мужской работой
Евгений
в твоей лошади будет еще одно окно?
Maxim
в документе ищу блок с классом, а мне приходит всь документ
Евгений
в 90% случаях ты что0то вписал не верно
Евгений
в мохнатые года его использовал
Maxim
в том-то и прикол, что все правильно прописал
Avent
в том-то и прикол, что все правильно прописал
ну покажи код, это же не объективно сейчас, а субъективно)
Евгений
И желательно тот сайт, который ты пытаешься парсить
Maxim
$url = 'http://www.vhlru.ru/standings/league/492/'; $file = file_get_contents($url); $doc = phpQuery::newDocument($file); $table = $doc->find('.conference_table .uni_table tbody');
Евгений
$content = phpQuery::newDocument( $content ); $content = pq( $content )->find( 'div.js-metrika-offers-count' );
Евгений
вот в примерах есть
Евгений
найди 3 отличия
Евгений
$table = pq($doc)->find('.conference_table .uni_table tbody');
Maxim
Странно, предыдущий парсер и без pq работает
Anton
Вообще, лучшее, что я пользовался для парсинга - это связка ноджс+nightmare. Получается очень лаконично, легко контролируется визуально и довольно быстро. Каталог в 3500 позиций выпарсивается за полчаса.
Евгений
ну если на php надо, то газл неплох
Anton
Могу свой код скинуть. Он заточен под каталоги, в которых поиск по артикулу работает. Я беру прайс конторы, выдергиваю из него в виде Джейсона артикул+цену, а дальше на нужном сайте по артикулам все выпарсиваю.
Avent
тот же результат
а как ты его выводишь потом?
Avent
в каком месте покажи
Maxim
сразу после кода проверяю чере вар дамп
Avent
ну покажи как
Avent
весь код скинь
Avent
и что ты выдернуть хочешь тоже скинь
Avent
текст/поле/содержимое элементов
Avent
просто напиши
Maxim
ща
Avent
вообще через var_dump не лучший метод использования, потому что данные могут содержать в себе весь документ
Avent
попробуй так $table = $doc->find('.conference_table .uni_table tbody'); $data = pq($table)->html();
Avent
или так: foreach ($table as $item) { $data = pq($item)->html(); }
Avent
также при парсинге сайтов смотри в исходник не через инспектор (панель разработчика), потому что там уже сформированный DOM страницы, динамический (с помощью javascript или еще чего). А парсер берет исходный текст
Avent
типа view-source:https://ya.ru/
Maxim
через view source смотрел. страница статичная
Maxim
через print_r тоже выводится весь документ
Maxim
Даже когда в таблице ищу tr один. Приходит весь документ
Евгений
ты код показывай
Евгений
непонятно что ты через print_r выводишь
Евгений
в доке phpQuery еще вот что есть: PRINT OUTPUT // 1st way print phpQuery::getDocument($doc->getDocumentID()); // 2nd way print phpQuery::getDocument(pq('div')->getDocumentID()); // 3rd way print pq('div')->getDocument(); // 4th way print $doc->htmlOuter(); // 5th way print $doc; // another... print $doc['ul'];
Mihail
ребят кто кстати из недопилиного парсинга сможет сделать CSV? был парнишка один который сделал все в mysql загрузил категории и товары и пропал.... с суммой денег :(
Mihail
жаль что 9000 не вернуть
Mihail
ну или его адресс не узнать.
Mihail
я бы к нему приехал
Avent
на python есть хорошее "автономное" решение - scrappy
Anonymous
я бы к нему приехал
только не дома... на лестничную площадку хотя бы выйдите ребята)
Avent
пишется паук/пауки, и можно по API запускать их, получать данные и т.д.
Avent
то есть с такой же структурой как там есть?
Anonymous
хотя 9 тысяч эта не та сумма... нет бы, достаточная, чтобы смотать на Мальдивы. Тогда человека ещё понять хотя бы можно было)
Евгений
я бы к нему приехал
вычисли его по ip
Mihail
у меня есть два файла которые как он сказал что даже если он пропадет то любой доделает
Avent
ну это сложно, даже не знаю как сделать, выгрузить из mysql таблицы в csv
Avent
phpadmin поставлен?
Mihail
у меня только 2 файла и больше ничего
Anonymous
ребят есть эффективный способ получить grandparent с помощью fenom???
Avent
@aldos, есть. Все вверх от текущего. Глубину выбирай сам,
Avent
{var $parents = $_modx->getParentIds($_modx->resource.id, 2, array('context' => 'web'))}
Avent
хоть 10 grandparent от текущего
Avent
цифра 2 - "глубина" вверх
Avent
{var $parents = $_modx->getParentIds($_modx->resource.id, 2, ['context' => 'web'])}
Avent
вот так вернее
Anonymous
цифра 2 - "глубина" вверх
А если глубина "гуляет"
Avent
пиши максимальную
Avent
5500
Avent
500
Avent
получишь список всех родителей от текущего вверх и до 0
Anonymous
Благодарю за ответы
Anton
Кто нибудь делал фильтр по TV полям? например нужно вывести от 10руб до 30руб. Что то все перепробовал не получается, может у кого нибудь пример есть?
Maxim
через where делал?
Anton
Да, так делал &where=`{ "price:IN":[300,800] }`