Python 3 – Obtener texto de la etiqueta en beautifulSoup

Estoy usando beautifulSoup para extraer datos del sitio web. El texto de ese sitio web cambia cada vez que recargas tu página, así que básicamente deseo poder enfocar el nombre de la clase como una variable estática ya que el texto es dynamic.

import requests from bs4 import BeautifulSoup url = 'xxxxxxxxxxx' r = requests.get(url) soup = BeautifulSoup(r.content, 'html.parser') class2 = soup.find_all(True, class_="template_title") print (class2) 

que imprime

4


Cuando la página se vuelva a cargar, seguiré enfocándome en el área, pero no sé cómo imprimir solo el texto (que en este caso es: 4)

Una vez que esto se haya resuelto, tengo otra pregunta: si la clase contiene varias tags, ¿hay alguna forma de obtener más datos estáticos para asegurarse de que solo imprima el texto que estaba buscando y no más? (Tengo clase, pero ¿podría usar también height = “50” valign = “bottom” width = “535”?)

  1. Puede utilizar el atributo de text o string del elemento.

     elems = soup.find_all(True, class_='template_title') print([elem.string for elem in elems]) # prints `['4']` for the given html snippet 
  2. Especifique más atributos como quiera:

     elems = soup.find_all(True, class_='template_title', height='50', valign='bottom', width='535') 
  1. por lo general uso .get_text ()

  2. sí tu puedes

    hay un método: .find_all (nombre, attrs, recursivo, cadena, límite, ** kwargs)

    ** kwargs : recive algo como la altura, el valor, el ancho

    o

    attrs = {‘height’: ’50’, ‘valign’: ‘bottom’}