Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158

Как сделать, чтобы парсер переходил на нужные страницы пока есть нужный элемент

07.08.2021, 22:16. Показов 1390. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте, проблема заключается в том, что сайт не отдаёт кол-во пагинации, а только 3, когда на сайте их например 39. Но я заметила что есть кнопка "Загрузить ещё" которая перекидывает на нужную страницу, как сделать так, чтобы пока есть эта кнопка, сайт парсил страницу и перекидывал на следующую, после чего перекидывал на другой раздел, помогите пожалуйста.
Python
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
        pagination = int(sup.find('ul', class_='pagination').find_all('a')[-2].text)  # Отдаёт 3 страницы
        button = sup.find('span', class_='button__inner').text  # Кнопка "загрузить ещё"
        # print(button)
        for page in range(1, pagination + 1):
            card_url = f'{card.get("href")}'
            url = f'{card_url}?page={page}'
            responce = requests.get(url=url, headers=headers)
            soup = BeautifulSoup(responce.text, 'lxml')
 
            products_items = soup.find_all('div', class_='sku-card-small-container')
            for product_item in products_items:
                all_prices = product_item.find_all('div',
                                                   class_='sku-prices-block__item sku-prices-block__item--primary')
                for price in all_prices:
                    currency = price.find('span', class_='sku-price__weight')
                    if currency:
                        price_rubles = price.find('span', class_='price-label__integer').text.strip()
                        price_copes = price.find('small', class_='price-label__fraction').text.strip()
                        currency_0 = price.find('span', class_='sku-price__weight').text.strip()
                        all_price = f'{price_rubles},{price_copes}₽{currency_0}'
                    else:
                        price_rubles = price.find('span', class_='price-label__integer').text.strip()
                        price_copes = price.find('small', class_='price-label__fraction').text.strip()
                        all_price = f'{price_rubles},{price_copes}₽'
                    print(f'Цена: {all_price}')
 
                try:
                    product_name = product_item.find('div', class_='sku-card-small__title').text.strip()
                except:
                    product_name = 'Продукт не нашёлся!'
 
                try:
                    product_href = product_item.find('a', class_='sku-card-small sku-card-small--ecom')
                    card_url = f'{product_href.get("href")}'
                except:
                    card_url = 'Ссылка не нашлась!'
 
                try:
                    product_sale = product_item.find('div',class_='discount-label-small discount-label-small--sku-card sku-card-small__discount-label').text.strip()
                except:
                    product_sale = 'Скидки нет!'
 
                time.sleep(1)
 
                print(f'Название: {count}. {product_name}')
                print(f'Ссылка: {card_url}')
                print(f'Скидка: {product_sale}')
                print('#' * 69)
 
                count += 1
 
            with open('products.html', 'w', encoding='utf-8') as file:
                file.write(req.text)
 
        numbers += 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2021, 22:16
Ответы с готовыми решениями:

Как сделать, чтобы парсер переходил на нужные страницы пока есть нужный
Здравствуйте, при парсинге сайта мне сайт не отдаёт всю пагинацию, а только 3 страницы, но отдаёт кнопку загрузить ещё, которая...

Как сделать, чтобы к значению p прибавлялась 1, до тех пор пока не получится нужный результат?
Господа, подскажите пожалуйста как сделать, чтобы в коде: import hashlib import binascii p = 1 str =...

Как сделать так, чтобы при клике на элемент меню появлялся нужный блок и исчезал ненужный?
У меня есть список-меню .sidebar-menu и каждый li этого списка имеет свой id. Так же имеется блок .services-info, где находятся блоки, один...

8
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
07.08.2021, 23:11
Через if
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
08.08.2021, 02:32  [ТС]
if button: написать?
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
08.08.2021, 11:18
Alina Zolotova, А как вы остальную часть написали? Для начала напишите код для поиска этой кнопки. В зависимости от того что получается ветвите через if. Без ссылки на сайт больше ничем не смогу помочь.
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
08.08.2021, 12:34  [ТС]
Matrix3007, вот строчка которая отвечает за поиск кнопки
Python
1
button = sup.find('span', class_='button__inner').text  # Кнопка "загрузить ещё"
Добавлено через 43 секунды
Matrix3007, я пробовала через if, но что-то не очень выходит)
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
08.08.2021, 12:36
Alina Zolotova, Давайте ссылку на сайт
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
08.08.2021, 13:00
Цитата Сообщение от Matrix3007 Посмотреть сообщение
А как вы остальную часть написали?
Копипаст по примерам.

Цитата Сообщение от Alina Zolotova Посмотреть сообщение
как сделать так, чтобы пока есть эта кнопка, сайт парсил страницу и перекидывал на следующую,
Попробовать изучить как работают сайты. Если AJAX, динамика, JSON, API, Browser Developer Tools для тебя просто набор букв, то зачем ты взялась за парсинг?
Если следующие страницы подгружаются динамически, то нужно либо изначально использовать selenium - для имитации человеческих действий, либо разбираться с внутренним API сайта.
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
08.08.2021, 23:44  [ТС]
Matrix3007, не надо, спасибо. Нашла подобную проблему, там челоек решал через selenium. Позже скину код как я исправила ошибку

Добавлено через 25 секунд
Garry Galler, выше я написала как собираюсь решать
0
09.08.2021, 12:31

Не по теме:

Цитата Сообщение от Alina Zolotova Посмотреть сообщение
Позже скину код как я исправила ошибку
Умоляю тебя - не надо. Тут и так столько говнокода накидано... Я тебе в прошлый раз написал, почему твой код неправильный, но ты ничему не научилась и по-прежнему пишешь неправильно.
Поэтому не надо кода. Как-нибудь переживем...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2021, 12:31
Помогаю со студенческими работами здесь

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

как сделать так, чтобы скрипт постоянно переходил по ссылке
Подскажите, как сделать чтобы скрипт постоянно переходил по ссылке(после перехода он вернется на ту же страницу), но при появлении на...

Как сделать, чтобы url с параметрами переходил на страницу 404.php?
Здравствуйте! Подскажите, пожалуйста, следующее. Нужно сделать, чтобы страницы пагинации типа ...

Как сделать чтобы при нажатии на кнопку пользователь переходил в следующее окно программы
Как сделать чтобы при нажатии на кнопку пользователь переходил в следующее окно программы(чтобы окно выскакивало не как дополнительное а...

Как сделать чтобы элемент появлялся при прокрутке страницы html
Добрый вечер. Вопрос в теме. В инете неполная информация, вроде код есть, но понятия не имею куда вставлять. Из инета (это проверка...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru