tipo tamaño que letra fuente disminuir cuadro como color centimetros cambiar aparece python html beautifulsoup html-table font-size

python - fuente - Encuentra todos los estilos de compás con un tamaño de letra más grande que el más común a través de la sopa hermosa pitón



que es tamaño de fuente (2)

Entiendo cómo obtener el texto de un estilo div o span específico a partir de esta pregunta: cómo encontrar los estilos de tramo más comunes

Ahora la dificultad está tratando de encontrar todos los estilos de tramo con tamaños de fuente más grandes que el más común?

Sospecho que debería usar expresiones regulares, pero primero necesito extraer el tamaño de fuente más común específico?

Además, ¿cómo se determina "más grande que" cuando la condición es una cadena?


Esto puede ayudarte:

from bs4 import BeautifulSoup import re usedFontSize = [] #list of all font number used #Find all the span contains style spans = soup.find_all(''span'',style=True) for span in spans: #print span[''style''] styleTag = span[''style''] fontSize = re.findall("font-size:(/d+)px",styleTag) usedFontSize.append(int(fontSize[0])) #Find most commanly used font size from collections import Counter count = Counter(usedFontSize) #Print list of all the font size with it''s accurence. print count.most_common()


Para encontrar todos los estilos de tramo con tamaños de fuente más grandes que el estilo de tramo más común con BeautifulSoup, debe analizar cada estilo de CSS que se haya devuelto.

El análisis de CSS se realiza mejor usando una biblioteca como cssutils . Esto le permitiría acceder al atributo fontSize directamente.

Esto tendría un valor como 12px que no se ordena de forma natural correctamente. Para evitar esto, puede usar una biblioteca como natsort .

Entonces, primero analiza cada uno de los estilos en objetos css. Al mismo tiempo, guarde una lista de todas las sopas para cada intervalo, junto con el CSS analizado para el estilo.

Ahora use el atributo fontSize como la clave para ordenar con natsort. Esto le daría una lista ordenada de estilos de acuerdo con su tamaño de fuente, la más grande primero (usando reverse=True ). takewhile() se usa para crear una lista de todas las entradas de la lista hasta el punto donde el tamaño coincide con el más común, lo que da como resultado una lista de entradas más grande que la más común.

from bs4 import BeautifulSoup from collections import Counter from itertools import takewhile import cssutils import natsort html = """ <span style="font-family: ArialMT; font-size:12px">1</span> <span style="font-family: ArialMT; font-size:14px">2</span> <span style="font-family: ArialMT; font-size:1px">3</span> <span style="font-family: Arial; font-size:12px">4</span> <span style="font-family: ArialMT; font-size:18px">5</span> <span style="font-family: ArialMT; font-size:15px">6</span> <span style="font-family: ArialMT; font-size:12px">7</span> """ soup = BeautifulSoup(html, "html.parser") style_counts = Counter() parsed_css_style = [] # Holds list of tuples (css_style, span) for span in soup.find_all(''span'', style=True): style_counts[span[''style'']] += 1 parsed_css_style.append((cssutils.parseStyle(span[''style'']), span)) most_common_style = style_counts.most_common(1)[0][0] most_common_css_style = cssutils.parseStyle(most_common_style) css_styles = natsort.natsorted(parsed_css_style, key=lambda x: x[0].fontSize, reverse=True) print "Styles larger than most common font size of {} are:".format(most_common_css_style.fontSize) for css_style, span in takewhile(lambda x: x[0].fontSize != most_common_css_style.fontSize, css_styles): print " Font size: {:5} Text: {}".format(css_style.fontSize, span.text)

En el ejemplo que se muestra, el tamaño de letra más utilizado es 12px , por lo que hay 3 entradas más grandes que esta de la siguiente manera:

Styles larger than most common font size of 12px are: Font size: 18px Text: 5 Font size: 15px Text: 6 Font size: 14px Text: 2

Para instalarlo probablemente necesitará:

pip install natsort pip install cssutils

Tenga en cuenta que esto supone que los tamaños de fuente utilizados son consistentes en su sitio web, no es capaz de comparar diferentes métricas de fuentes, solo el valor numérico.