如何获得图像与python的完整链接?

时间:2016-06-18 18:37:15

标签: python beautifulsoup web-crawler

我正在尝试制作一个进入网页的抓取工具,并下载该页面上的所有可用图片。我的代码看起来像这样

import random
import urllib.request
import requests
from bs4 import BeautifulSoup

def get_images(url):
    code = requests.get(url)
    text = code.text
    soup = BeautifulSoup(text)
    for img in soup.findAll('img'):
        src = img.get('src')
        download_image(src)


def download_image(url):
    name = random.randrange(1, 100)
    image_name = str(name) + ".jpg"
    urllib.request.urlretrieve(url, image_name)

get_images("http://www.any_url.com/")

现在很多图片通常都不会在src标记中包含完整的网址。现在,我的问题是如何获得图像的完整URL以便我可以下载它们?

1 个答案:

答案 0 :(得分:2)

图片的完整网址是您网页的主机名 + src标记中的相对路径

例如

您网页的网址为http://example.com/foo/bar.html

和image src标记为:<img src="/image/smiley.png">

然后您图片的绝对网址为http://example.com/image/smiley.png

使用内置函数urljoin()

可以轻松执行此操作
from urllib.parse import urljoin
webpage_url = 'http://example.com/foo/bar.html'
src = '/folder/big/a.jpg'
urljoin(webpage_url, src)