我刮一个html保存在一个文件与以下代码:
from bs4 import BeautifulSoup as bs
path_xml = r"..."
content = []
with open(path_xml, "r") as file:
content = file.readlines()
content = "".join(content)
bs_content = bs(content, "html.parser")
bilder = bs_content.find_all("bilder")
def get_str_bild(match):
test = match.findChildren("b")
for x in range(len(test)): # here is the problem (not giving me all elements in test)
return test[x].get("d")
for b in bilder:
if b.b:
print(get_str_bild(b))
输出:
L3357U00_002120.jpg
L3357U00_002140.jpg
L3357U00_002160.jpg
基本上,在xml文件中有3个位置我有节点"* bilder *"的子节点。每个块看起来像这样:
<Bilder>
<B Nr="1" D="L3357U00_002120.jpg"/>
<B Nr="2" D="L3357U00_002120.jpg"/>
<B Nr="3" D="L3357U00_002120.jpg"/>
<B Nr="4" D="L3357U00_002120.jpg"/>
<B Nr="9" D="L3357U00_002120.jpg"/>
<B Nr="1" D="L3357U00_002130.jpg"/>
<B Nr="2" D="L3357U00_002130.jpg"/>
<B Nr="3" D="L3357U00_002130.jpg"/>
<B Nr="4" D="L3357U00_002130.jpg"/>
<B Nr="9" D="L3357U00_002130.jpg"/>
</Bilder>
目前它只返回每个块的第一张图片,我想返回所有的图片。
我到底做错了什么?
2条答案
按热度按时间bvuwiixz1#
你错过了bilders的循环,你可以删除你的函数并简化你的代码如下:
uyhoqukh2#
您需要修复
get_str_bild(match)
函数。它当前返回第一个d
属性。将您的函数替换为: