在我正在抓取的网页中,有很多标题,我需要识别它们才能在数据库中设置一个值。问题是这些标题没有特定的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)
一旦按标记类型解析了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
这将找到包含<span>
标签的所有<p>
标签,其中style=="text-transform: uppercase"
并打印其关联文本。