Python爬取网站图片并保存到本地文件夹 - 代码详解及优化
使用Python爬取网站图片并保存到本地文件夹
本文将介绍如何使用Python代码爬取网站图片并保存到本地文件夹,并提供代码优化方案,包括增加图片数量、避免重复下载等。
代码示例
import requests
from bs4 import BeautifulSoup
import os
def download(url):
res = requests.get(url)
img = res.content
filename = 'img/' + url.split('/')[-1]
if not os.path.exists(filename):
with open(filename, 'wb') as f:
f.write(img)
def get_html():
for i in range(519, 530): # 获取第519到529页的图片
url = f'http://www.netbian.com/index_{i}.htm'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
res = requests.get(url, headers=headers)
res.encoding = 'gbk'
if res.status_code == 200:
html = res.text
soup = BeautifulSoup(html, 'lxml')
all_list = soup.find(class_='list')
all_img = all_list.find_all('img')
if not os.path.exists('img'):
os.makedirs('img')
for img in all_img:
src = img['src']
download(src)
if __name__ == '__main__':
get_html()
代码解释
- 导入库: 首先导入必要的库,包括
requests用于发送网络请求,BeautifulSoup用于解析HTML,os用于创建文件夹。 - download函数: 该函数用于下载图片并保存到本地文件夹。
- 使用
requests.get()获取图片内容。 - 使用
url.split('/')[-1]获取图片文件名。 - 使用
os.path.exists()判断图片是否存在,避免重复下载。 - 使用
open()打开文件并写入图片内容。
- 使用
- get_html函数: 该函数用于获取网页内容并解析图片链接。
- 使用
requests.get()获取网页内容,并设置User-Agent防止被网站识别为爬虫。 - 使用
res.encoding = 'gbk'设置网页编码。 - 使用
BeautifulSoup解析网页内容,找到包含图片的元素。 - 遍历所有图片元素,获取图片链接并调用
download()函数下载图片。
- 使用
- 主函数: 运行
get_html()函数执行爬取和保存操作。
代码优化
- 增加图片数量: 修改
get_html()函数中的range()函数,可以爬取更多页面的图片。 - 避免重复下载: 在
download()函数中添加判断,如果图片已经存在,则不再下载。 - 设置代理: 如果被网站封锁,可以使用代理服务器绕过封锁。
- 错误处理: 添加异常处理机制,捕获并处理网络错误等异常情况。
总结
本文介绍了如何使用Python代码爬取网站图片并保存到本地文件夹,并提供了代码优化方案。通过学习本篇文章,您可以学习到基本的网络爬取技术,以及如何处理网页解析和图片保存等操作。请注意,爬取网站图片需要遵守网站的 robots.txt 协议,并避免对网站造成过大的负荷。
原文地址: https://www.cveoy.top/t/topic/fRmN 著作权归作者所有。请勿转载和采集!