Comprender la función Find () en Beautiful Soup

Sé que lo que estoy tratando de hacer es simple, pero me está causando dolor. Me gustaría extraer datos de HTML utilizando BeautifulSoup. Para hacer eso necesito usar correctamente la función .find() . Aquí está el HTML con el que estoy trabajando:

 

Ed Boon

@noobde
73,599 Real
32,452 Fake
Followers
69%
Audit score

Los valores que quiero son 73599 de data-value=73599 , 32352 de data-value=32452 , y el 69% de percentage good .

Usando código pasado y ejemplos en línea, esto es lo que tengo hasta ahora:

 RealValue = soup.find("div", {"class":"real number"})['data-value'] FakeValue = soup.find("audit", {"class":"fake number"})['data-value'] 

Ambos hasta ahora sin efecto. No estoy seguro de cómo elaborar el hallazgo para extraer el número del 69% .

soup.find("div", {"class":"real number"})['data-value']

Aquí está buscando un elemento div , pero el span tiene la clase “número real” en su ejemplo de datos HTML, intente en su lugar:

 soup.find("span", {"class": "real number", "data-value": True})['data-value'] 

Aquí también estamos comprobando la presencia del atributo data-value .


Para encontrar elementos que tengan clases de “número real” o “número falso”, puedes hacer un selector de CSS :

 for elm in soup.select(".real.number,.fake.number"): print(elm.get("data-value")) 

Para obtener el valor del 69% :

 soup.find("div", {"class": "percentage good"}).get_text(strip=True) 

O, un selector de CSS:

 soup.select_one(".percentage.good").get_text(strip=True) soup.select_one(".score .percentage").get_text(strip=True) 

O bien, localice el elemento h6 con el texto de Audit score y luego obtenga el hermano anterior :

 soup.find("h6", text="Audit score").previous_sibling.get_text(strip=True)