Python - 如何获得特定div的样式属性的总数

时间:2016-02-09 07:40:47

标签: python css web-scraping beautifulsoup urllib2

如何获得特定div的样式属性总数

例如:

<div class="div1" style="direction:rtl;text-align:center;clear:both;margin:.1em;margin-bottom:1em;">

这个div样式有5个样式属性。

<div class="div2" style="direction:rtl;text-align:center;clear:both;margin:.1em;">

此div样式有4个样式属性

2 个答案:

答案 0 :(得分:2)

from bs4 import BeautifulSoup    

source = """
<div class="div1" style="direction:rtl;text-align:center;clear:both;margin:.1em;margin-bottom:1em;">
<div class="div2" style="direction:rtl;text-align:center;clear:both;margin:.1em;">
"""
soup = BeautifulSoup(source, 'lxml')
for div in soup.find_all('div'):
    print div.get('style')

这将为您提供如下输出:

direction:rtl;text-align:center;clear:both;margin:.1em;margin-bottom:1em;
direction:rtl;text-align:center;clear:both;margin:.1em;

现在这些是str个对象。您可以按;拆分它们,并根据需要进行格式化。至于找到你可以这样接近的属性数量:

for div in soup.find_all('div'):
    print len(filter(None , div.get('style').split(';')))

输出:

5
4

答案 1 :(得分:1)

使用BeautifulSoup解析器。

>>> soup = BeautifulSoup('''<div class="div1" style="direction:rtl;text-align:center;clear:both;margin:.1em;margin-bottom:1em;">''', 'html')
>>> len([i for i in soup.select('.div1')[0]['style'].split(';') if i])
5