使用BeautifulSoup获取页面中所有图像的绝对路径列表
有人能教我怎么用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'