用requests或者bs4第三方库批量下载百度图片,要求可以多页下载,并放入到相应文件夹。使用pillow第三方库,将获取到的图片批量添加水印文字
时间: 2024-06-09 12:08:29 浏览: 98
百度图片批量下载
3星 · 编辑精心推荐
以下是一个示例代码,使用requests和bs4库批量下载百度图片,并使用Pillow库给图片添加水印:
```python
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlencode
from PIL import Image, ImageDraw, ImageFont
# 定义搜索关键词和页数
keyword = '猫'
page_num = 3
# 定义下载目录和水印文字
download_dir = 'download'
watermark_text = 'Test Watermark'
# 创建下载目录
if not os.path.exists(download_dir):
os.mkdir(download_dir)
# 定义水印字体
font = ImageFont.truetype('arial.ttf', 40)
# 循环下载多页图片
for page in range(page_num):
# 构造请求参数
params = {
'tn': 'result_pageturn',
'word': keyword,
'pn': page * 30
}
url = 'https://image.baidu.com/search/index?' + urlencode(params)
# 发送请求并解析HTML
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 查找图片链接并下载
for img in soup.find_all('img'):
try:
img_url = img['src']
if img_url.startswith('http'):
response = requests.get(img_url)
filename = os.path.join(download_dir, img_url.split('/')[-1])
with open(filename, 'wb') as f:
f.write(response.content)
print('下载成功:', filename)
# 打开图片并添加水印
image = Image.open(filename)
draw = ImageDraw.Draw(image)
draw.text((10, 10), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save(filename)
print('添加水印成功:', filename)
except Exception as e:
print('下载失败:', e)
```
在上述代码中,我们首先定义了搜索关键词和页数,以及下载目录和水印文字。然后,我们循环构造请求参数,发送请求并解析HTML,查找图片链接并下载。对于每个下载的图片,我们使用Pillow库打开图片并添加水印,最后保存图片。注意,我们使用了try-except语句来处理下载失败的情况。
阅读全文