Выберите определенный тег на BS4 Python

У меня есть следующий HTML

 <li class = "product-size__option-wrapper">
            <a onclick = "ACC.productDetail.getNewProductSize(this)" data-option-code = "000000000196428006" class = "product-size__option">
    
                I WANT THIS</a>
        </li>
    <li class = "product-size__option-wrapper">
            <a onclick = "ACC.productDetail.getNewProductSize(this)" data-option-code = "000000000196428007" class = "product-size__option product-size__option--no-stock">
    
                I DONT WANT THIS</a>
        </li>
<li class = "product-size__option-wrapper">
            <a onclick = "ACC.productDetail.getNewProductSize(this)" data-option-code = "000000000196428006" class = "product-size__option">
    
                I WANT THIS</a>
        </li>

Я использую этот код для получения данных

linksize =soup.find_all('li', class_='product-size__option-wrapper')
            productsize = []
            for size in linksize:
                for size_available in size.find_all('a', {'class':['product-size__option']}):
                    productsize.append(size_available.text.strip())

Но он получает оба тега, так как он имеет один и тот же класс (product-size__option), как я могу получить только ту информацию, которая мне нужна?

Спасибо

Если вам просто нужен первый элемент, замените find_all() на find() (тогда вы можете удалить цикл for)

Greg 21.12.2020 00:22

Это просто пример, как и у первого у меня лоте, как и у второго

Jesus Torres 21.12.2020 00:31
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
188
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Данные, которые вам не нужны, имеют класс CSS product-size__option--no-stock. Вы можете проверить, не содержит ли элемент этот класс, выполнив следующую проверку: if 'product-size__option--no-stock' not in size_available.attrs['class']

Например:

from bs4 import BeautifulSoup

html = '''<li class = "product-size__option-wrapper">
        <a onclick = "ACC.productDetail.getNewProductSize(this)" data-option-code = "000000000196428006" class = "product-size__option">

            I WANT THIS</a>
    </li>
<li class = "product-size__option-wrapper">
        <a onclick = "ACC.productDetail.getNewProductSize(this)" data-option-code = "000000000196428007" class = "product-size__option product-size__option--no-stock">

            I DONT WANT THIS</a>
    </li>'''

    
soup = BeautifulSoup(html,  'html.parser')

linksize =soup.find_all('li', class_='product-size__option-wrapper')
productsize = []
for size in linksize:
    for size_available in size.find_all('a', {'class':['product-size__option']}):
        if 'product-size__option--no-stock' not in size_available.attrs['class']:
            productsize.append(size_available.text.strip())

Другие вопросы по теме