如何使用 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)
我正在尝试制作一个爬虫程序,它会转到网页并下载该网页上所有可用的图像。我的代码看起来像这样
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)