Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6

Парсинг на phpQuery, не могу удалить ненужный div блок

24.08.2018, 12:54. Показов 5624. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Решил написать парсер на phpQuery, но не могу удалить(или взять без) ненужный div-блок.
Суть скрипта:
Заходим на сайт с циататми(они нам и нужны), но на главной странице цитата может быть обрезена. Потому заходим в блок и берем ссылку на страницу с полным текстом.
Сам скрипт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
//подключаем библиотеку
include_once 'phpQuery.php';
$html = file_get_contents('https://jokeme.ru/');
$document = phpQuery::newDocument($html);
//берем нужный блок и ссылку в нем
$links = $document->find('.czr-title');
  foreach ($links as $link) {
    $pqLink = pq($link);   
    $href = $pqLink->attr('href');
//очищаем ссылку от кавычек
    $href2 = str_replace('"','', $href);
//Т.к. по ссылке идет редирект, используем другой метод получения данных
$curl = curl_init($href2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1); 
$page = curl_exec($curl);    
    $htmln = file_get_contents('$page'); //это наверное и не нужно
    $documentn = phpQuery::newDocument($page);
    $pqjoke=pq($joke);
//Получаем данные из нужного div
    $pqjoke = $documentn->find('.czr-wp-the-content'); 
//Пытаемся удалить не нужный div(не работает)
    $pqjoke=$pqjoke->remove('#jp-relatedposts');     
//Выводим результат
    echo $pqjoke.'<br>';
  }
?>
HTML блок для наглядности
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.08.2018, 12:54
Ответы с готовыми решениями:

Не могу удалить ненужный язык
Привет всем! Подскажите, пожалуйста, каким образом в Windows 10 удалить не нужный мне язык ввода? У меня присутствуют, переключаются и...

Динамический блок div, не могу составить код JS
Доброго времени суток. Сможет ли мне кто то помочь с кодом: Есть див блок который прилипает при прокрутке экрана к верху страницы. Так...

Скрыть блок первый блок div, если есть второй div
Добрый день! Подскажите пожалуйста, начинаю изучать JavaScript и тут столкнулся с такой задачей. Мне необходимо скрыть первый блок div,...

10
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2018, 13:02
Попробуйте брать сразу <p>
PHP
1
$pqjoke = $documentn->find('.czr-wp-the-content p');
0
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6
24.08.2018, 13:10  [ТС]
Я бы так и сделал, но в других дивах(которые хочу удалить), так же есть <p>, потому вытягивает мусорный текст
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2018, 13:13
Лучший ответ Сообщение было отмечено reverb-sama как решение

Решение

А если первый брать?
PHP
1
$pqjoke = $documentn->find('.czr-wp-the-content p:first');
1
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6
24.08.2018, 13:20  [ТС]
Спасибо, так работает. Хотя, конечно неплохо было бы узнать на будщее, как удалять весь ненужный блок.
Уточню еще момент, "first", я могу и дургие числа прописывать, типо 2, или 5?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2018, 13:40
Цитата Сообщение от reverb-sama Посмотреть сообщение
Хотя, конечно неплохо было бы узнать на будщее, как удалять весь ненужный блок.
Нужно его сначала найти, потом удалить:
PHP
1
$pqjoke->find('#jp-relatedposts')->remove();
Цитата Сообщение от reverb-sama Посмотреть сообщение
Уточню еще момент, "first", я могу и дургие числа прописывать, типо 2, или 5?
Вот так можно:
PHP
1
$documentn->find('.czr-wp-the-content p:eq(2)');
Тут подробнее: https://code.google.com/archiv... ctors.wiki
0
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6
24.08.2018, 13:45  [ТС]
Пробовал через найти и удалить, так он удаляет только сам тег div, и мусорный текст из блока выводит под div'ом по которому искали.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2018, 13:53
Это:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
//подключаем библиотеку
include_once 'phpQuery/phpQuery.php';
$html = file_get_contents('https://jokeme.ru/');
$document = phpQuery::newDocument($html);
//берем нужный блок и ссылку в нем
$links = $document->find('.czr-title');
foreach ($links as $link) {
    $pqLink = pq($link);
    $href = $pqLink->attr('href');
//очищаем ссылку от кавычек
    $href2 = str_replace('"', '', $href);
//Т.к. по ссылке идет редирект, используем другой метод получения данных
    $curl = curl_init($href2);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $page = curl_exec($curl);
    $documentn = phpQuery::newDocument($page);
 
//Получаем данные из нужного div
    $pqjoke = $documentn->find('.czr-wp-the-content');
//Пытаемся удалить не нужный div(не работает)
    $pqjoke->find('#jp-relatedposts')->remove();
//Выводим результат
    echo $pqjoke . '<br>';
}
?>
Выдаёт это:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="czr-wp-the-content">
        <p>Как только я ни пытался бросить гипноз. Чего я только ни делал, даже пробовал курить…</p>
 
      </div>
<div class="czr-wp-the-content">
              <p>Вчера на улице я наткнулся на трупик ребенка-приведения. Хотя, если подумать, возможно, это был всего лишь носовой платок. Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Если вы хотите привести девушку в замешательство, подарите ей шоколадные туфли. Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Мой дедушка любит вспоминать о временах, когда люди не боялись оставлять двери открытыми. Наверно, из-за этого его подлодка и затонула… Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Мой дедушка был вуайерист. Он сверлил дырки в полу и подсматривал за соседями снизу. Сейчас он умер, но я верю, что-то он […]</p>
          </div>
<br>
#jp-relatedposts нет. А слово "Похожее" изначально в теге <p>.
0
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6
24.08.2018, 14:03  [ТС]
Воооот. Результат получается что мусорный текст оказывается в теге <div class="czr-wp-the-content">.
А изначально он нахоится в теге <div id="jp-relatedposts" class="jp-relatedposts" style="display: block;">.
Как я понял удаляет только сам тег, и текст переходит в <div class="czr-wp-the-content">. А нужно чтоб все что в <div id="jp-relatedposts"> удалилось. И сам тег и что в нем.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.08.2018, 14:51
Не знаю. Без удаления в некоторых тегах "<p>" тоже есть слово "Похожее". Вот БЕЗ удаления:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="czr-wp-the-content">
        <p>Как только я ни пытался бросить гипноз. Чего я только ни делал, даже пробовал курить…</p>
 
<div id="jp-relatedposts" class="jp-relatedposts">
    <h3 class="jp-relatedposts-headline"><em>Похожее</em></h3>
</div>      </div>
<div class="czr-wp-the-content">
              <p>Уже скоро выйдет моя книга. Хотя, вообще, зря я ее съел. Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Если вы хотите привести девушку в замешательство, подарите ей шоколадные туфли. Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Вчера на улице я наткнулся на трупик ребенка-приведения. Хотя, если подумать, возможно, это был всего лишь носовой платок. Похожее</p>
          </div>
<div class="czr-wp-the-content">
              <p>Мой дедушка был из тех людей, которые не могут себя заставить выбросить какую-нибудь вещь. Он так и умер на войне, сжимая в […]</p>
          </div>
<br>
Это изначально так. Ничего не перемещается никуда.
0
0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 6
24.08.2018, 16:07  [ТС]
Все что ниже 4 строки относится к <div id="jp-relatedposts" class="jp-relatedposts">, а <div class="czr-wp-the-content"> из первой строки не относится к jp-relatedposts. Если удалить все вложения внутри <div id="jp-relatedposts" class="jp-relatedposts"> исчезнут и <div class="czr-wp-the-content">, которые находят внутри <div id="jp-relatedposts" class="jp-relatedposts">. А <div class="czr-wp-the-content"> из первой строки не удалится, т.к. к <div id="jp-relatedposts" class="jp-relatedposts"> не относится. Но как мы видим, вложения не удаляются, просто выдаются <div class="czr-wp-the-content">, которые были внутри <div id="jp-relatedposts" class="jp-relatedposts">
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2018, 16:07
Помогаю со студенческими работами здесь

Не могу понять как сделать блок div открытым
Нашел в интернете одну статью про аккордеон (на снимке видно то, о чём идет речь). Скачал код. Попробовал сделать нечто подобное. Вроде все...

Не могу нормально разместить (расположить относительно страницы) блок div
http://***************Всем здравствуйте! Сегодня озадачился сделать блок див вместо того, что бы устанавливать плагины для социальных...

Удалить ненужный символ из строки
Добрый день ув. пользователи! Подскажите пожалуйста, как из строки вида /#top/#12345#/ сделать /top/#12345#/ ?

Удалить ненужный последний символ в строке
Есть такои код. Нужно, чтобы он возвращал строку без последней запятои, т.е вот такои s= 0,1или такои s=0(в зависимости от выборанных...

Как удалить ненужный пункт меню выбора ОС?
После установки Windows 8.1 на предыдущую Windows 7 появилось окно выбора ОС. Как удалить ненужный путь загрузки ОС?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru