在我要抓取的网页中,有很多标题,我需要识别它们以在数据库中设置一个值。问题在于这些标题没有特定的ID或类。
他们遵循以下模式:
<p ALIGN="CENTER"><font face="Arial" SIZE="2">
<a name="tituloivcapituloisecaoii"></a><b>
<span style="text-transform: uppercase">Seção II<br>
DAS ATRIBUIÇÕES DO CONGRESSO NACIONAL</span></b></font></p>
<p ALIGN="CENTER"><font face="Arial" SIZE="2"><a name="tituloivcapituloisecaoiii"></a>
<b><span style="text-transform: uppercase">Seção III<br>
DA CÂMARA DOS DEPUTADOS</span></b></font></p>
一个可以识别它们的属性是:text-trasform: uppercase
。
如何检查p
是否包含一个标题?
这是我当前的代码:
soup = BeautifulSoup(f, 'html.parser')
for tag in soup.findAll():
if tag.name in ['a', 'strike']:
tag.decompose()
allp = soup.findAll('p')
for p in allp:
print(p)
答案 0 :(得分:2)
一旦您按标签类型解析了html,就可以使用任何定义属性在标签内搜索。在这种情况下,可以使用text-transform:uppercase
。
soup = BeautifulSoup(f, 'html.parser')
for p in soup.find_all("p"):
if p.span["style"]=="text-transform: uppercase":
title=p.text
print(title)
>>>Seção IIDAS ATRIBUIÇÕES DO CONGRESSO NACIONAL
这将找到所有<p>
个包含<span>
标签的标签,其中style=="text-transform: uppercase"
并打印它们的关联文本。