0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 62

Пагинация при парсинге (phpQuery)

28.04.2015, 12:29. Показов 6037. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день Всем!
Народ, подскажите, значит есть на сайте пагинация.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="right toolbar__pages">
                <div class="pager">
                  <ul class="pagination pagination-sm">
                  
          
                <li class="active"><a href=".html?limit=100&amp;no_cache=true&amp;p=1">1</a></li>
                <li><a href=".html?limit=100&amp;no_cache=true&amp;p=2">2</a></li>
                
                 
                <li>
            <a title="След." href=".html?limit=100&amp;no_cache=true&amp;p=2" class="next"><i class="fa fa-chevron-right"></i></a>
        </li>
              </ul>
    </div>
            </div>
вот этим парсю последнее значение(по последнему значению, столько раз цикл будет работать)
HTML5
1
$pagesCount = pq('div.toolbar__pages ul.pagination-sm a:last')->html();
Но как видите по коду , что там тег А это стрелка.
Вообщем подскажите, как вычислить количество страниц с товаром в категории.
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2015, 12:29
Ответы с готовыми решениями:

Кодировка при парсинге
не пойму что не так с кодировкой и как ее настроить правильно, а именно вот наглядный пример $test=&quot;тест&quot;; ...

Ошибка при парсинге
&lt;form action=&quot;&quot; method=&quot;post&quot; name=&quot;s&quot;&gt; &lt;textarea cols=&quot;50&quot; rows=&quot;10&quot; name=&quot;area&quot;&gt;&lt;/textarea&gt;&lt;br&gt;&lt;br&gt; &lt;input type=&quot;submit&quot; value=&quot; ...

Сохранения картинок при парсинге
Добрый день Гуру!!!Подскажите, парсю сайт с помощью (phpQuery) все что нужно получаю , но ни как не могу понять как Скачать картинки...

16
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.04.2015, 12:37
Вычислять количество не нужно. Просто при каждом запросе проверяйте, есть ли ссылка на следующую страницу. Если есть - получайте её адрес и вперёд.
0
Заблокирован
28.04.2015, 12:39
Цитата Сообщение от Rei555 Посмотреть сообщение
Но как видите по коду , что там тег А это стрелка.
не видим...
Зато видим &amp;p=2 что даёт основание ПРЕдПОЛОГАТь что там всего две ссылки.
А гадать не нужно. Надо проанализировать страницу.
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
28.04.2015, 12:42
Получаешь href последней ссылки. Определяешь чему равен p
0
Заблокирован
28.04.2015, 12:44
Цитата Сообщение от Para bellum
Вычислять количество не нужно. Просто при каждом запросе проверяйте, есть ли ссылка на следующую страницу.
Раз уж идти по такому пути также надо проверять не парсилась ли страница уже. Так как некоторые пагинаторы организованы так что ссылки идут как бы по кругу.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.04.2015, 12:46
Цитата Сообщение от Trukl Посмотреть сообщение
Раз уж идти по такому пути также надо проверять не парсилась ли страница уже. Так как некоторые пагинаторы организованы так что ссылки идут как бы по кругу.
А я что-то против сказал?
Я объяснил алгоритм, а как его реализует Rei555 - уже другое дело.
Да и пути другого нет.
0
Заблокирован
28.04.2015, 12:50
Цитата Сообщение от Para bellum Посмотреть сообщение
Вычислять количество не нужно.
Иногда как раз проще получить общей количество и спарсить в цикле. Но всё зависит от организации сайта который грабят.
0
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 62
28.04.2015, 12:51  [ТС]
Получаешь href последней ссылки. Определяешь чему равен p
Последняя ссылка имеет

HTML5
1
2
3
<a class="next" title="След." href="http:///c-186.html?p=2">
<i class="fa fa-chevron-right"></i>
</a>
Всегда стрелка (типо вперед или назад)

Вычислять количество не нужно. Просто при каждом запросе проверяйте, есть ли ссылка на следующую страницу. Если есть - получайте её адрес и вперёд.
Можно примерчик. А то что я только не перебрал. Пытался тупо получить предпоследнее число в пагинации, и столько раз крутнуть цикл.. но что то не выходит.
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
28.04.2015, 12:53
Цитата Сообщение от Rei555 Посмотреть сообщение
Всегда стрелка (типо вперед или назад)
Какая разница? Стрелочка, кругляшка. href
0
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 62
28.04.2015, 12:55  [ТС]
Цитата Сообщение от F57 Посмотреть сообщение
Какая разница? Стрелочка, кругляшка. href
HTML5
1
2
3
<a class="next" title="След." href="http:///c-186.html?p=2">
<i class="fa fa-chevron-right"></i>
</a>
И тут я получу 2 , а страниц на самом деле 123.
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
28.04.2015, 12:56
Какой пример указал. Так и помогаем.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.04.2015, 12:57
Rei555, просто заместо вот этого:
PHP
1
pq('div.toolbar__pages ul.pagination-sm a:last')->html();
Напишите, чтобы выбирался не вложенный html, а атрибут ссылки "href".
Для парсига в данном случае лучше сделать рекурсивную функцию (которая сама себя вызывает). Что-то вроде этого:
PHP
1
2
3
4
5
6
7
8
9
function parse( $url ){
    # Тут код
    # ...
 
    # Если ссылка на следующую страницу найдена
    if( ... )
        # Вызываем функцию парсинга
        parse( $ссылка );
}
0
Заблокирован
28.04.2015, 13:00
Цитата Сообщение от Rei555 Посмотреть сообщение
Последняя ссылка имеет
Цитата Сообщение от Trukl Посмотреть сообщение
А гадать не нужно. Надо проанализировать страницу.
Если ты проходишь по ссылке (на стрелочку) страницы заканчиваются? Их всего две? Если всего две значит можно считать двойку последней страницей (и соответственно добавлять этот параметр к твоему циклу). Если же страниц больше то стрелочка указывает лишь на следующию страницу. А значит надо идти по пути предложенному Para bellum,
0
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 62
28.04.2015, 13:11  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Rei555, просто заместо вот этого:
Код PHP
1
pq('div.toolbar__pages ul.pagination-sm a:last')->html();
Напишите, чтобы выбирался не вложенный html, а атрибут ссылки "href".
HTML5
1
$pagesCount = pq('div.toolbar__pages ul.pagination-sm a')->attr('href');
Но это дает просто Ссылку, а цикл не может работать с условием URL. Ему то число надо)
Или я вас не правильно понял.
Цитата Сообщение от Trukl Посмотреть сообщение
Если ты проходишь по ссылке (на стрелочку) страницы заканчиваются? Их всего две? Если всего две значит можно считать двойку последней страницей (и соответственно добавлять этот параметр к твоему циклу). Если же страниц больше то стрелочка указывает лишь на следующию страницу. А значит надо идти по пути предложенному Para bellum,
Второй вариант.
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
28.04.2015, 13:26
омг. дай уже ссылку на сайт который парсишь
* или правилами нельзя?

Добавлено через 8 минут
ок. получил ссылку.

твой чудо парсер разве не может получить пред-последний href?
ну или просто вылови его по class="last"
0
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 62
28.04.2015, 13:38  [ТС]
Цитата Сообщение от F57 Посмотреть сообщение
твой чудо парсер разве не может получить пред-последний href?
ну или просто вылови его по class="last"
Внатуре Чудо))

Выловил по классу., но выводит цифру в классе last столько кол-во раз , сколько значение самой цифры. Значение из класса Ласт получается, в цикле же . Как его из цикла то убрать!? Получил значение за первый цикл и в сторону.
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
28.04.2015, 13:59
Убирай цикл. Либо забей и просто бери в цикле. Комп от перенагрузки не помрёт.

аля
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$end=0;
 
foreach(??)
{
   $end=$last;
}
 
 
if ($end!=0)
{
   ///
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2015, 13:59
Помогаю со студенческими работами здесь

Ошибки при парсинге на PHP
В данном куске кода страницы мне нужно извлечь текст из тегов &lt;option&gt;: &lt;td&gt;&lt;select name=&quot;make&quot; tabindex=&quot;1&quot;...

Не действует тег <br> при парсинге
почему то не действует тег &lt;br&gt; при парсинге названий смартфонов с сайта. скрин прикрепляю &lt;?php // Учусь парсить сайт...

Ошибка ERR_CONNECTION_RESET при парсинге
Всем привет. Сразу скажу, что я перерыл почти весь интернет и не нашел решения этой проблемы там. В общем сейчас пишу парсер и наткнулся на...

Неправильная кодировка при парсинге
Привет всем. Извеняюсь, что создал ещё одну тему. Просто нужно решить одну проблему. Использую такой код. &lt;?php include...

Проверка на существование блока при парсинге
Для парсинга использую DOM. Как сделать проверку в цикле, чтобы не выводило ошибки(пропускало их), если нет на определенных страницах...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru