使用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;
我目前的代码尝试正在......
[['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())
我可能需要执行某种类型的索引分配,但我无法弄清楚。
感谢。
答案 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)