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

时间:2010-08-24 08:48:58

标签: python beautifulsoup

有人可以告诉我如何使用BeautifulSoup获取网页中所有图片的aboslute路径列表吗?

获取所有图像很简单。我这样做:

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

......但是我在获得绝对路径方面遇到了困难。有什么帮助吗?

谢谢。

2 个答案:

答案 0 :(得分:5)

获取后必须对路径进行规范化。这可以使用urlparse.urljoin完成。例如:

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

答案 1 :(得分: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"]