使用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>]
我目前的代码尝试正在......
[['C']]
我想得到的结果是......
[[], [], [], [], [], ['C'], [], [], []]
我已经尝试了很多方法,通过查找div的数量x = len(stats = soup.find_all("div", {"class": "Stats"})
来创建列表的空列表,然后使用for循环尝试附加元素(如果存在)并将空列表留在原位(如果不存在)。
hList = []
for each in stats:
for each2 in each.find_all("div", {"class":"Stats__x"}):
hList.append(each2.text.split())
我可能需要执行某种类型的索引赋值,但我无法弄明白。
谢谢。
首先,我用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)