我希望从所有标签中提取文本及其字体大小。如果文本在所有页面的相同标签中,则能够提取它。我有不同的html链接,其中一些包含<p>
标签,<font>
标签等中的文本。
在一个html页面中,所有文本都位于<font>
标记中,因此,很容易提取文本及其对应的字体大小,也可以通过使用{{1}来查找其是否为粗体}属性。
font-weight
如果文本位于一种类型的标签中,则此方法很好。但是,当文本在单个网页(例如data = pd.read_excel(r'C:\Users\mob190004455\Desktop\html_segmentation_result\Additional_Sample_Docs.xlsx')
links = list(data.iloc[:,1])
for l in range(len(links)):
source_code = requests.get(links[l]).text
soup = BeautifulSoup(source_code, 'lxml')
font_spans = [ data for data in soup.select('font') if 'font-size' in str(data) ]
output = []
for i in font_spans:
tup = ()
try:
fonts_size = re.search(r'(?is)(font-size:)(.*?)(px)',str(i.get('style'))).group(2)
except AttributeError:
fonts_size = 'None'
try:
fonts_weight = re.search(r'(?is)(font-weight:)(.*?)(;)',str(i.get('style'))).group(2)
except AttributeError:
fonts_weight = 'None'
tup = (i.text,[fonts_size+'px',fonts_weight])
output.append(tup)
seg_list = [output[i] for i in range(len(output)) if output[i][0] != '\xa0']
stripped_list = [', '.join(map(str, x)) for x in seg_list]
new_seg_list = [a.replace('\n','') for a in stripped_list if a]
和<p>
)中放置多个标签时,情况就变得复杂了。
another sample source
如何概括它,以便能够提取文本及其字体大小?