多线程实现爬取图片

import os
import threading
import requests

from get_img_url import get_img_url


# 下载单张图片方法,方法入参为图片url地址和图片名称
def download_image(url, filename):
    response = requests.get(url)
    with open(filename, 'wb') as f:
        f.write(response.content)


def main():
    # 创建一个线程列表
    threads = []
    # 创建一个文件夹来保存图片
    if not os.path.exists('images'):
        os.makedirs('images')
    for index, url in enumerate(img_url_list):
        # 为每个图片生成一个文件名
        filename = f'images/image_{index}.jpg'
        # 创建并启动线程,将单个下载图片方法作为入参放入target中,图片方法函数本身入参放入args中
        t = threading.Thread(target=download_image, args=(url, filename))
        t.start()
        threads.append(t)

    # 等待所有线程完成
    for t in threads:
        t.join()


if __name__ == '__main__':
    # 1. 修改关键词
    keyword = '小姐姐'
    # 2. 获取指定关键词的图片链接
    img_url_list = get_img_url(keyword)
    # 3. 多线程下载图片到指定位置
    main()

 

posted on 2024-06-05 14:53  诚实的表达自己  阅读(4)  评论(0编辑  收藏  举报