Python实例题:Python快速获取斗图表情
目录
Python实例题
题目
python-get-meme-imagesPython 快速获取斗图表情脚本
代码解释
get_meme_images 函数:
download_images 函数:
主程序:
运行思路
注意事项
Python实例题
题目
Python快速获取斗图表情
python-get-meme-imagesPython 快速获取斗图表情脚本
import requests
import os
from urllib.parse import quotedef get_meme_images(keyword, num_images=10):base_url = f"https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={quote(keyword)}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&word={quote(keyword)}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=0&rn={num_images}"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}try:response = requests.get(base_url, headers=headers)response.raise_for_status()data = response.json()image_urls = []for item in data.get('data', []):if 'thumbURL' in item:image_urls.append(item['thumbURL'])return image_urlsexcept requests.RequestException as e:print(f"请求出错: {e}")return []except ValueError:print("解析 JSON 数据出错。")return []def download_images(image_urls, save_dir):if not os.path.exists(save_dir):os.makedirs(save_dir)for i, url in enumerate(image_urls):try:response = requests.get(url)response.raise_for_status()file_path = os.path.join(save_dir, f"meme_{i}.jpg")with open(file_path, 'wb') as f:f.write(response.content)print(f"图片 {file_path} 下载成功。")except requests.RequestException as e:print(f"下载图片 {url} 时出错: {e}")if __name__ == "__main__":keyword = "斗图表情"num_images = 10save_dir = "meme_images"image_urls = get_meme_images(keyword, num_images)if image_urls:download_images(image_urls, save_dir)
代码解释
-
get_meme_images
函数:- 构建百度图片搜索的 URL,使用
quote
函数对关键词进行编码,确保可以处理包含特殊字符的关键词。 - 发送 HTTP 请求获取 JSON 数据,解析 JSON 数据提取图片的
thumbURL
。 - 处理请求异常和 JSON 解析异常,确保程序的健壮性。
- 构建百度图片搜索的 URL,使用
-
download_images
函数:- 检查保存图片的目录是否存在,若不存在则创建。
- 遍历图片链接列表,发送请求下载图片并保存到本地。
- 处理下载过程中的请求异常。
-
主程序:
- 定义要搜索的关键词、要获取的图片数量和保存图片的目录。
- 调用
get_meme_images
函数获取图片链接。 - 若获取到图片链接,调用
download_images
函数下载图片。
运行思路
- 安装依赖库:确保已经安装了
requests
库,若未安装,可使用以下命令进行安装:
pip install requests
- 运行脚本:将上述代码保存为
get_meme_images.py
文件,在终端中运行:
python get_meme_images.py
- 查看结果:程序会在当前目录下创建一个名为
meme_images
的文件夹,里面包含下载的斗图表情图片。
注意事项
- 反爬机制:百度图片有反爬机制,可能会限制请求频率或返回验证码。可以通过设置请求间隔、使用代理 IP 等方式应对。
- 合法性:确保你的爬取行为符合相关法律法规和百度的使用条款。
- 图片质量:获取的是缩略图链接,图片质量可能不高,若需要高质量图片,可能需要进一步分析网页结构获取原图链接。