📜  获取随机超级英雄图像 - Python (1)

📅  最后修改于: 2023-12-03 15:41:31.272000             🧑  作者: Mango

获取随机超级英雄图像 - Python

如何使用 Python 获取随机超级英雄图像?本文将向您介绍获取随机超级英雄图像的两种方法,一是使用爬虫技术获取网络上的图片,另一种是使用 API 获取指定超级英雄的图片。

使用爬虫技术获取网络上的图片

运用爬虫技术通过访问指定网站来获取随机超级英雄图像,可以使用 Python 中的 requests 库和 BeautifulSoup 库来实现。

import requests
from bs4 import BeautifulSoup
import random

url = "https://www.superherodb.com/characters"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
images = soup.find_all("img")

random_image = random.choice(images)
print(random_image['src'])

上面的代码中,我们首先构建了一个包含了所有超级英雄图片的网站 URL,然后使用 requests 库发起 GET 请求,并指定请求头部信息,接着使用 BeautifulSoup 库将返回的 HTML 文档解析成一个 BeautifulSoup 对象进行处理,最后通过调用 find_all 方法获取所有图片信息,再通过 random.choice 方法从图片列表中随机选择一张图片并打印图片的直链地址。

使用 API 获取指定超级英雄的图片

我们还可以使用 API 获取指定超级英雄的图片,这种方法可能需要先在相应的 API 平台注册账号并获取相应的 API key。

以 Marvel API 为例,我们需要先到 Marvel 开发者门户 注册账户并获取 API key,然后使用 Python 的 requests 库对 API 进行调用。

import requests
import hashlib
import time
import random

public_key = "your_public_key"
private_key = "your_private_key"
timestamp = str(time.time())
hash_str = hashlib.md5((timestamp + private_key + public_key).encode('utf-8')).hexdigest()

# 设置请求 URL 和参数
url = "https://gateway.marvel.com/v1/public/characters"
parameters = {"apikey": public_key, "ts": timestamp, "hash": hash_str}

# 发送 GET 请求
response = requests.get(url, headers=headers, params=parameters)
character_data = response.json()['data']['results']

# 从获取到的角色数据中随机选择一个角色
random_character = random.choice(character_data)

# 获取选择角色的头像
thumbnail_url = random_character['thumbnail']['path'] + '/portrait_xlarge.' + random_character['thumbnail']['extension']
print(thumbnail_url)

上面的代码中,首先我们需要先设置 API 的请求 URL 和参数,其中 timestamp 表示当前时间戳,hash_str 表示使用 md5 对当前时间戳、private_key、public_key 进行加密生成的哈希值,这些参数相当于验证身份和请求权限的凭证。

然后使用 requests 库对 API 进行 GET 请求,并从返回的 JSON 数据中抽取出随机选择的超级英雄,最后获取该超级英雄的头像直链地址并打印出来。

至此,本文介绍了使用爬虫技术和 API 获取随机超级英雄图像的两种方法,希望对 Python 程序员有所帮助。