У меня есть следующий 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), как я могу получить только ту информацию, которая мне нужна?
Спасибо
Это просто пример, как и у первого у меня лоте, как и у второго
Данные, которые вам не нужны, имеют класс 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())
Если вам просто нужен первый элемент, замените find_all() на find() (тогда вы можете удалить цикл for)