您正在遍历这一行中的每个 img 标签并打印每个标签:
for link in soup.find_all('img'):
print link.get('src')
但是,您不是在该循环中写入文件,您只是link.get('src')+'\n'
在最后写入。
这只会写入当前分配给的链接,这只是您在上面的循环中找到的最后一个img 标记。这就是为什么只有一个 'src' 值将写入输出文件的原因。
您需要将每一行写入循环中的文件,该文件会遍历您感兴趣的每个 img 标签。您需要进行一些重新排列才能做到这一点:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("youtube.htm"))
file = open("parseddata.txt", "wb")
for link in soup.find_all('img'):
print link.get('src')
file.write(link.get('src')+"\n")
file.flush()
file.close()
您还应该记得关闭文件,因为我在上面代码段的最后一行中添加了该文件。
with
编辑:根据下面 Hooked 的评论,如果您使用关键字,这就是这个片段的样子。一旦缩进块结束,使用with
将自动为您关闭文件,这样您甚至不必考虑它:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("youtube.htm"))
with open("parseddata.txt", "wb") as file:
for link in soup.find_all('img'):
print link.get('src')
file.write(link.get('src')+"\n")