【爬虫】多线程爬取图片
以下是一个使用Python的requests和threading库来多线程下载图片的简单例子。
import requests
from threading import Thread
import os
# 图片下载函数
def download_image(url, filename):
response = requests.get(url)
if response.status_code == 200:
with open(filename, 'wb') as file:
file.write(response.content)
# 主函数
def multi_thread_download(urls, save_dir):
if not os.path.exists(save_dir):
os.makedirs(save_dir)
threads = []
for i, url in enumerate(urls):
filename = os.path.join(save_dir, f"image_{i}.jpg")
thread = Thread(target=download_image, args=(url, filename))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
# 示例使用
urls = ['http://example.com/image1.jpg', 'http://example.com/image2.jpg'] # 替换为实际图片URL
save_dir = 'images' # 图片保存的文件夹
multi_thread_download(urls, save_dir)
这段代码定义了一个下载单个图片的函数download_image
和一个启动多线程下载的函数multi_thread_download
。multi_thread_download
函数接收一个图片URL列表和一个保存路径,然后为每个图片创建一个线程来下载。每个线程独立下载图片,并将其保存到指定的文件夹。
请注意,在实际应用中,你可能需要处理更多的异常情况,例如网络错误、请求限制、图片内容变化等,并且可能需要引入相应的异常处理和重试逻辑。
评论已关闭