如何识别CSS内联属性

时间:2018-12-12 15:40:27

标签: python django beautifulsoup

在我要抓取的网页中,有很多标题,我需要识别它们以在数据库中设置一个值。问题在于这些标题没有特定的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)

1 个答案:

答案 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"并打印它们的关联文本。