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

Beautiful Soup поиск по атрибуту

03.11.2019, 22:33. Показов 15150. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите пожалуйста как с помощь bs4 получить все li c data-xxxx, xxxx-каждый раз новое
Миниатюры
Beautiful Soup поиск по атрибуту  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2019, 22:33
Ответы с готовыми решениями:

Извлечь атрибуты a href и img src одновременно, используя Beautiful Soup
Знаю как извлечь и показать a href urls = soup.findAll('a') for url in urls: print(url) Но как можно найти...

Beautiful Soup Python
Я пишу программу открывающую все ссылки на указанной странице и выписывает те, у которых в url есть id= и т.д. Но по какой-то причине в...

В чем проблема? (Beautiful Soup)
from bs4 import BeautifulSoup import requests headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...

20
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
04.11.2019, 11:41  [ТС]
Никто не знает?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
04.11.2019, 15:40
Jhonat, знают, например искать по другим атрибутам, или использовать xpath для поиска. Был бы пример сайта, можно было бы посмотреть
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
04.11.2019, 17:23  [ТС]
Welemir1, поисковая выдача яндекса. Надо получить все рекламные объявления
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
04.11.2019, 17:25
Welemir1,

Не по теме:

следующая тема - "Памагити! Как абайти каптчу?"

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
04.11.2019, 17:31
Jhonat, пример? выдача по какому запросу? какие объявления получить?

Добавлено через 3 минуты
почему не брать просто все li?
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
04.11.2019, 17:40  [ТС]
Welemir1, Любой запрос. Например -купить цветы.

Цитата Сообщение от Welemir1 Посмотреть сообщение
почему не брать просто все li?
Потому что не рекламные тоже в li находятся. Рекламные блоки(первые 3 и последние 5) содержат data-xxxx Вот по ним и хочу найти

Python
1
2
soup = BeautifulSoup(html, "html.parser")    
ad_blocks = soup.find_all('li', attrs= {r'^data-\w\w\w\w$': ""})
Хотел так найти, но выводит всеравно все блоки
Миниатюры
Beautiful Soup поиск по атрибуту  
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
04.11.2019, 17:44
Цитата Сообщение от Jhonat Посмотреть сообщение
Потому что не рекламные тоже в li находятся.
покажи что ты под рекламными блоками имеешь в виду, скрин.
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
04.11.2019, 18:17  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
покажи что ты под рекламными блоками имеешь в виду, скрин.
Все посты где есть приписка реклама
Миниатюры
Beautiful Soup поиск по атрибуту  
0
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
04.11.2019, 19:27
Загрузи все блоки и потом выбери те в которых есть слово РЕКЛАМА
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
04.11.2019, 19:35  [ТС]
volkomorov, а если запрос будет "реклама" то и в каждом блоке это слово будет. Но это же не то
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
04.11.2019, 19:58
Jhonat, ок, бери все li и фильтруй те, где больше 4 атрибутов (у рекламных)
0
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
04.11.2019, 20:04
Jhonat,

берем все блоки, проходим циклом и ищем в них блок который информирует пользователя, что он рекламный

<div class="label label_theme_direct label_font_own organic__label organic__label_align_right label_padding_1px-5px-3px-6px label_border-radius_20">реклама</div>
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
04.11.2019, 20:09
volkomorov, ты это не мне, а автору пиши и лучше кодом, у меня скажем нет такого дива в верстке
0
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
04.11.2019, 20:31
Welemir1, уже исправился

Я дал только направление, на каждый сайт пишется свой парсер
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
05.11.2019, 13:12  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
def parse(html):
    soup = BeautifulSoup(html, "html.parser")    
    ad_blocks = soup.find_all('li', {'data-log-node': True})
   
    t = []
    for data in ad_blocks:
        if "direct-label" in data:
            t.append(data)
    for i in t:
        d = i.find('div',class_='organic__url-text')
        print(d.text)
Так не ищет, может все-таки есть способ не фильтровать, а сразу искать по атрибуту?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
05.11.2019, 13:30
Лучший ответ Сообщение было отмечено Jhonat как решение

Решение

Jhonat, я же тебе предложил взять только те где больше 4 атрибутов и нет маркета (это отдельное окно от яндекс маркета), у меня получается 7 блоков, как и на странице.

Python
1
2
a_list = list(filter(lambda x: len(x.attrs)>4 and 'market_constr' not in x.attrs.values(), soup.findAll('li')))
print(len(a_list))
1
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
05.11.2019, 13:31
Python
1
2
3
4
5
6
# Грузим все li
all_li = soup.find_all('li', attrs={'class', 'serp-item'})
# Ищем в каждом li блок с классом в котором указывается, что это реклама 
for li in all_li:
    li_filter = li.find('div', attrs={'class', 'label label_theme_direct label_font_own organic__label organic__label_align_right label_padding_1px-5px-3px-6px label_border-radius_20'})
    print(li_filter)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
05.11.2019, 13:36
Цитата Сообщение от volkomorov Посмотреть сообщение
li_filter = li.find('div', attrs={'class', 'label label_theme_direct label_font_own organic__label organic__label_align_right label_padding_1px-5px-3px-6px label_border-radius_20'})
не нужно всю простынь, достаточно 1 класс уникальный указать
Python
1
li_filter = li.find('div', attrs={'class', 'label_theme_direct'})
кроме того, автору нужны не самы дивы с рекламой, а те li, которые их содержат
1
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
05.11.2019, 13:41
Добавить условие: если блок не найден, удалить его из всех блоков li
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2019, 13:41
Помогаю со студенческими работами здесь

Парсинг Beautiful Soup 4 и Selenium.Webdriver
Здравствуйте, пишу парсер под сайт https://www.kimovil.com/ru/ и возникает проблема: товары динамически подгружаются. Сначала были...

Beautiful Soup - существует ли ограничения на длину получаемых данных?
Здравствуйте! Почему при парсинге html достается только часть данных, которые все лежат в одном теге. данные - это 1 000 000 цифр. Получаю...

Beautiful Soup 4, сравнение html-парсеров при запуске в потоке
Здравствуйте, спарсил страницу с помощью lxml, встроенного в Beautiful Soup - выдал 30 секунд. Не поверил, начал искать ошибки и...

Парсинг на Python с Beautiful Soup
Напишите 2 парсера. Первый парсер разработайте для скрапинга сайта pleer.ru, где необходимо вытащить текст из колонки категорий(см. скрин...

Поиск по атрибуту класса
Привет всем, у меня есть объект в котором много полей, и я хочу создать универсальный метод в котором можно будет выбрать по каким...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru