모든 범위의 스타일을 찾을 수 있습니다.
CSS 구문 분석은 cssutils
과 같은 라이브러리를 사용하는 것이 더 좋습니다. 이렇게하면 fontSize
속성에 직접 액세스 할 수 있습니다.
자연히 올바르게 정렬되지 않는 12px
과 같은 값을 갖습니다. 이 문제를 해결하려면 natsort
과 같은 라이브러리를 사용할 수 있습니다.
그래서 먼저 각 스타일을 CSS 개체로 구문 분석하십시오. 동시에 스타일에 대한 구문 분석 된 CSS와 함께 각 범위에 대한 모든 수프의 목록을 유지하십시오.
이제 Natsort를 사용하여 정렬 할 때 fontSize
속성을 키로 사용하십시오. 이렇게하면 가장 큰 글꼴 크기에 따라 스타일 목록을 올바르게 정렬 할 수 있습니다 (reverse=True
사용). 그런 다음 takewhile()
을 사용하여 가장 일반적인 항목보다 크기가 큰 항목까지 목록의 모든 항목 목록을 작성하여 가장 일반적인 항목 목록보다 큰 목록을 만듭니다.
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
은 아마 당신은해야합니다 설치하려면 :의 예에서
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)
은 가장 일반적으로 사용되는 글꼴 크기는 이것보다 더 큰 3 개 다른 항목이 있으므로 다음과 같이
12px
입니다
pip install natsort
pip install cssutils
사용 된 글꼴 크기가 웹 사이트에서 일관성이 있다고 가정합니다. 다른 글꼴 메트릭을 숫자 값으로 비교할 수는 없습니다.
하나의리스트에 모든 스타일을 가져 와서 반복하고 모든 스타일의'font-size'를 하나의 배열에 저장하면됩니다. 당신은 더 큰 것을 찾을 수 있습니다. –