python多线程爬取图片
以下是一个简单的多线程爬取图片的示例代码:
import requests import threading import os def download(url, name): r = requests.get(url, stream=True) with open(name, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: f.write(chunk) def main(): urls = [ 'https://example.com/image1.jpg', 'https://example.com/image2.jpg', 'https://example.com/image3.jpg', # ... ] threads = [] for url in urls: name = url.split('/')[-1] thread = threading.Thread(target=download, args=(url, name)) thread.start() threads.append(thread) for thread in threads: thread.join() print('所有图片已下载完成') if __name__ == '__main__': main()
在这个示例中,我们定义了一个下载图片的函数 download,它接受一个图片的 URL url 和保存的文件名 name,使用 requests 库下载图片,并将其保存到指定的文件中。然后定义了图片的 URL 列表 urls,并创建了线程列表 threads。在创建线程时,我们使用 split() 函数获取图片文件名,并传递给下载函数 download。在主程序中,我们启动所有线程,并使用 join() 方法等待线程执行完成。最后输出下载完成信息。
需要注意的是,在下载大量图片时,可能会遇到网络瓶颈等问题,需要考虑性能优化。同时,在多线程爬虫中,也需要注意网站的反爬机制,以避免被封 IP 等问题。
相关文章