有没有办法在beautifulsoup python中找到最常出现/常见的跨度样式?

时间:2016-11-23 11:03:59

标签: python html text beautifulsoup html-table

由于我需要处理许多不同风格的pdf,我假设主要内容将在最常见/常见的范围内。

有没有办法在beautifulsoup python中找到最出现的跨度风格?

这是我用来查找特定范围样式的命令:

 font-family: CBCDEE+ArialMT; 
 font-size:12px':
 spans = soup.find_all('span',
                       attrs={'style': 'font-family: CBCDEE+ArialMT; font-size:12px'})`

有哪些方法可以找到最常见的/常见的?或者基本上,有没有办法获得跨度样式列表并计算不同样式的外观?

非常感谢。

2 个答案:

答案 0 :(得分:0)

这可能适合您: -

spans = soup.find_all('span',style=True)
for span in spans:
    print span['style']

这将打印文件中所有span标记中使用的所有样式。

答案 1 :(得分:0)

您可以使用Python Counter()计算所有不同的样式,然后显示most_common()元素,如下所示:

from bs4 import BeautifulSoup
from collections import Counter

html = """
    <span style="font-family: CBCDEE+ArialMT; font-size:12px">1</span>
    <span style="font-family: CBCDEE+ArialMT; font-size:14px">2</span>
    <span style="font-family: CBCDEE+ArialMT; font-size:14px">3</span>
    <span style="font-family: CBCDEE+Arial; font-size:12px">4</span>
    <span style="font-family: CBCDEE+ArialMT; font-size:12px">5</span>"""

soup = BeautifulSoup(html, "html.parser")    
style_counts = Counter()

for span in soup.find_all('span', style=True):
    style_counts[span['style']] += 1

print style_counts.most_common(1)[0][0]

对于此示例,它将显示:

font-family: CBCDEE+ArialMT; font-size:12px