创建包含空和已填充部分的列表的混合列表?

时间:2017-12-20 01:05:31

标签: html python-3.x web-scraping beautifulsoup

使用BeautifulSoup,我正在尝试创建一个列表列表,它使用HTML代码示例返回空列表以及它们出现的序列中的变量下面...



[<div class="Stats">
</div> 
<div class="Stats">
</div>
<div class="Stats">
</div>
<div class="Stats">
</div>
<div class="Stats">
</div>
<div class="Stats">
<div class="Stats__x">
<!--
-->C<!--
--></div>
</div>
<div class="Stats">
</div>
<div class="Stats">
</div>
<div class="Stats">
</div>]
&#13;
&#13;
&#13;

我目前的代码尝试正在......

[['C']]

我想得到的结果是......

[[], [], [], [], [], ['C'], [], [], []] 

我尝试了很多方法,通过查找div x = len(stats = soup.find_all("div", {"class": "Stats"})的数量创建列表的空列表,然后使用for循环尝试附加元素(如果存在)并将空列表保留到位(如果它没有&# 39;吨

hList = []
for each in stats:
    for each2 in each.find_all("div", {"class":"Stats__x"}):
        hList.append(each2.text.split())

我可能需要执行某种类型的索引分配,但我无法弄清楚。

感谢。

1 个答案:

答案 0 :(得分:1)

首先,我使用div搜索所有class="Stats",并在每个div内搜索一个div class="Stats__x"。如果我得到None,那么我将其更改为[]

data = '''<div class="Stats"></div>
<div class="Stats"></div>
<div class="Stats"></div>
<div class="Stats"></div>
<div class="Stats"></div>
<div class="Stats">
    <div class="Stats__x">
    <!--
    -->C<!--
    --></div>
</div>
<div class="Stats"></div>
<div class="Stats"></div>
<div class="Stats"></div>'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'html.parser')

result = []

for div in soup.find_all("div", {"class": "Stats"}):
    item = div.find("div", {"class": "Stats__x"}):
    if item:
        result.append( item.text.split() )
        #result.append( [item.text.strip()] )
    else:
        result.append( [] )

print(result)