用requests或者bs4第三方库批量下载百度图片,要求可以多页下载,并放入到相应文件夹。使用pillow第三方库,将获取到的图片批量添加水印文字
时间: 2024-06-09 15:08:30 浏览: 72
以下是实现该需求的Python代码:
```python
import requests
from bs4 import BeautifulSoup
from PIL import Image, ImageDraw, ImageFont
import os
# 搜索关键词
keyword = "猫"
# 搜索页数
page_num = 3
# 下载图片数量
num_images = 5
# 下载图片的保存路径
save_dir = "./images"
# 水印文字
watermark_text = "by AI Assistant"
# 水印文字字体
font_path = "./font/arial.ttf"
font_size = 40
font_color = (255, 255, 255)
# 创建保存路径
if not os.path.exists(save_dir):
os.mkdir(save_dir)
# 循环每一页搜索结果
for i in range(page_num):
# 构造搜索URL
url = f"https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={keyword}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&word={keyword}&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&fr=&pn={i * num_images + 1}&rn={num_images}"
# 发送HTTP请求
response = requests.get(url)
# 解析JSON数据
data = response.json()
# 循环每张图片
for j, item in enumerate(data["data"]):
# 获取图片URL
img_url = item["middleURL"]
if img_url:
# 发送HTTP请求下载图片
response = requests.get(img_url)
# 保存图片到本地文件
filename = f"{keyword}_{i * num_images + j + 1}.jpg"
filepath = os.path.join(save_dir, filename)
with open(filepath, "wb") as f:
f.write(response.content)
# 添加水印
image = Image.open(filepath)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, font_size)
text_width, text_height = draw.textsize(watermark_text, font=font)
x = image.width - text_width - 10
y = image.height - text_height - 10
draw.text((x, y), watermark_text, font=font, fill=font_color)
image.save(filepath)
```
该代码会批量下载百度图片搜索结果中的前num_images张图片,每页下载page_num页。下载下来的图片会自动添加水印文字,并保存到指定路径下的文件夹中。你可以根据需要修改搜索关键词、下载图片数量、水印文字等参数。请确保你已经安装了requests、bs4和Pillow这三个第三方库。
阅读全文