使用BeautifulSoup获取页面中所有图像的绝对路径列表

0 投票
2 回答
2126 浏览
提问于 2025-04-16 03:13

有人能教我怎么用BeautifulSoup获取网页中所有图片的绝对路径吗?

获取所有图片其实很简单。我现在是这么做的:

page_images = [image["src"] for image in soup.findAll("img")]

...但是我在获取绝对路径时遇到了一些困难。有没有人能帮帮我?

谢谢!

2 个回答

0

这里没有使用BeautifulSoup,而是用更优雅(而且维护得更好的)lxml和pyquery

import pyquery
from urlparse import urljoin

def make_images_absolute(self):
    self('img').each(lambda: self(this).attr('src',
           urljoin(self.base_url, self(this).attr('src'))))

url="http://lwn.net"
pq = pyquery.PyQuery(url)
for i in pq("img"):
    print i.attrib["src"]
make_images_absolute(pq)
for i in pq("img"):
    print i.attrib["src"]
5

在获取路径之后,你需要对它们进行规范化。这个过程可以使用 urlparse.urljoin 来完成。举个例子:

>>> urlparse.urljoin("http://google.com/some/path/", "../../img/icon.png")
'http://google.com/img/icon.png'

撰写回答