使用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()

代码解释

  1. 导入库: 首先导入必要的库,包括requests用于发送网络请求,BeautifulSoup用于解析HTML,os用于创建文件夹。
  2. download函数: 该函数用于下载图片并保存到本地文件夹。
    • 使用requests.get()获取图片内容。
    • 使用url.split('/')[-1]获取图片文件名。
    • 使用os.path.exists()判断图片是否存在,避免重复下载。
    • 使用open()打开文件并写入图片内容。
  3. get_html函数: 该函数用于获取网页内容并解析图片链接。
    • 使用requests.get()获取网页内容,并设置User-Agent防止被网站识别为爬虫。
    • 使用res.encoding = 'gbk'设置网页编码。
    • 使用BeautifulSoup解析网页内容,找到包含图片的元素。
    • 遍历所有图片元素,获取图片链接并调用download()函数下载图片。
  4. 主函数: 运行get_html()函数执行爬取和保存操作。

代码优化

  1. 增加图片数量: 修改get_html()函数中的range()函数,可以爬取更多页面的图片。
  2. 避免重复下载:download()函数中添加判断,如果图片已经存在,则不再下载。
  3. 设置代理: 如果被网站封锁,可以使用代理服务器绕过封锁。
  4. 错误处理: 添加异常处理机制,捕获并处理网络错误等异常情况。

总结

本文介绍了如何使用Python代码爬取网站图片并保存到本地文件夹,并提供了代码优化方案。通过学习本篇文章,您可以学习到基本的网络爬取技术,以及如何处理网页解析和图片保存等操作。请注意,爬取网站图片需要遵守网站的 robots.txt 协议,并避免对网站造成过大的负荷。

Python爬取网站图片并保存到本地文件夹 - 代码详解及优化

原文地址: https://www.cveoy.top/t/topic/fRmN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录