Python: 提取包围图像的href

2 投票
1 回答
1779 浏览
提问于 2025-04-18 15:01

我正在使用 bs4,想要提取一个指定图片的 href 链接。
比如在我的 HTML 代码中有:

<div style="text-align:center;"><a href="page/folder1/image.jpg" target="_blank"><img src="page_files/image.jpg" alt="Picture" border="0" width="150" height="150"></a></div>
</div>

我有我的图片 srcpage_files/image.jpg,我想提取对应的 href,在这个例子中就是: page/folder1/image.jpg。我尝试使用 find_previous 方法,但在提取 href 内容时遇到了一点小问题:

soup = bs4.BeautifulSoup(page)
for img in soup('img'):
  imgLink = img.find_previous("a")

这个方法返回的是整个标签:

<a href="Here_is_link"><img alt="Tumblr" border="0" src="Here_is_source"/></a>

但我无法获取 href 的内容,因为当我尝试这样做时:

imgLink = img.find_previous("a")['href']

我出现了错误。
同样的情况发生在我尝试使用 find_parent 时,如下:

imgLink = img.find_parent("a")['href']

我该如何解决这个问题?使用 find_previous() 还是 find_parent() 哪个更好呢?