我正在尝试制作一个进入网页的抓取工具,并下载该页面上的所有可用图片。我的代码看起来像这样
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以便我可以下载它们?
答案 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)