Solo intento imprimir el valor upc
de todas las secciones dentro de la sección de clase results
que tienen un valor para el atributo upc
y tampoco contienen la clase {{X3} }.
<div class="results">
<div upc="1284665">This one</div>
<div upc="8432651">This one</div>
<div upc>Not this one</div>
<div upc="1384268" class="EAN">Not this one too</div>
</div>
Salida deseada:
1284665
8432651
Este es el código que tengo ahora, pero incluye todas las secciones dentro de la sección de clase results
.
html = '''<div class="results">
<div upc="1284665">This one</div>
<div upc="8432651">This one</div>
<div upc>Not this one</div>
<div upc="1384268" class="EAN">Not this one too</div>
</div>'''
soup = BeautifulSoup(html, 'lxml')
for section in soup.select_one('.results'):
print(section)
3 respuestas
Esto está usando BeautifulSoup 4.7+ Esto es bastante fácil con los selectores CSS:
from bs4 import BeautifulSoup
html = """
<div class="results">
<div upc="1284665">This one</div>
<div upc="8432651">This one</div>
<div upc>Not this one</div>
<div upc="1384268" class="EAN">Not this one too</div>
</div>
"""
soup = BeautifulSoup(html, 'lxml')
for section in soup.select('.results div[upc]:not([upc=""], .EAN)'):
print(section['upc'])
Salida
1284665
8432651
Puede utilizar esto:
for div in soup.find_all("div"):
if div.get("upc") and "EAN" not in div.get("class", default=[]):
print(div.get("upc"))
Si está familiarizado con xpaths y los árboles de navegación, puede intentar usar lxml.
import lxml
from lxml import html
html_content = '''<div class="results">
<div upc="1284665">This one</div>
<div upc="8432651">This one</div>
<div upc>Not this one</div>
<div upc="1384268" class="EAN">Not this one too</div>
</div>'''
tree = html.fromstring(html_content)
Items = tree.xpath("//div/div[not(contains(@class,'EAN'))]")
for item in Items:
if(item.attrib['upc']!=None):
print(item.attrib['upc'])
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.