如何使用 python 获得图像的完整 link?

How to get complete link of an image with python?

我正在尝试制作一个爬虫程序,它会转到网页并下载该网页上所有可用的图像。我的代码看起来像这样

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。现在,我的问题是如何获得完整的 URL 图像以便我可以下载它们?

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

例如

Url 你的网页是 http://example.com/foo/bar.html

图像 src 标签是:<img src="/image/smiley.png">,

那么您的图像的绝对 url 将是 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)