python爬虫爬取图片的简单代码

下面是关于"python爬虫爬取图片的简单代码"的完整攻略和示例说明:

什么是Python爬虫?

Python爬虫是指使用Python编写程序,自动化地从网站抓取数据。Python爬虫是一种非常强大的工具,使用它,可以快速地获取大量的数据。

如何使用Python爬虫抓取图片?

爬取图片的过程和爬取普通的文本信息的过程大体相似,只是需要使用不同的方法来下载和处理图片数据。

第一步:确定需要爬取的图片网址

首先需要确定需要爬取的图片所在的网址。可以通过查看网页源代码或者使用浏览器的开发者工具来确定。

第二步:分析网页结构

在确定了需要爬取的图片网址之后,需要对网页结构进行分析,找到包含需要爬取图片的HTML元素,进而确定获取图片的方法。一般情况下,图片都是以img标签的形式出现在页面上。

第三步:编写Python爬虫程序

有了前两步的准备工作,就可以开始编写Python爬虫程序了。下面是一个简单的示例代码,可以实现爬取指定网页中的所有图片并保存到本地:

import requests
from bs4 import BeautifulSoup
import os

def download_image(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            file_name = url.split('/')[-1]
            file_path = os.path.join(save_dir, file_name)
            with open(file_path, 'wb') as f:
                f.write(response.content)
                print('Downloaded image: %s' % url)
        else:
             print('Failed to download image: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

def crawl_images(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            soup = BeautifulSoup(response.content, 'html.parser')
            for img in soup.find_all('img'):
                img_url = img.get('src')
                if img_url is not None and 'http' in img_url:
                    download_image(img_url, save_dir)
        else:
            print('Failed to crawl images from: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

url = 'https://www.example.com/images/'
save_dir = './images/'
if not os.path.exists(save_dir):
    os.mkdir(save_dir)
crawl_images(url, save_dir)

通过以上程序,可以爬取指定URL下的所有图片并保存到本地。程序中使用了Requests库和BeautifulSoup库来实现爬虫的功能。其中,download_image函数负责下载单个图片,crawl_images函数负责爬取整个网站中的所有图片。

示例1:爬取cn.bing.com上的每日一图

import requests
import os

def download_image(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            file_name = url.split('/')[-1]
            file_path = os.path.join(save_dir, file_name)
            with open(file_path, 'wb') as f:
                f.write(response.content)
                print('Downloaded image: %s' % url)
        else:
             print('Failed to download image: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

def crawl_images(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            image_url = 'https://cn.bing.com' + response.json()['images'][0]['url']
            download_image(image_url, save_dir)
        else:
            print('Failed to crawl images from: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'
save_dir = './images/'
if not os.path.exists(save_dir):
    os.mkdir(save_dir)
crawl_images(url, save_dir)

通过此程序可以爬取bing.com的每日一图,并保存到指定的文件夹内。

示例2:爬取Unsplash上的高清壁纸

import requests
from bs4 import BeautifulSoup
import os

def download_image(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            file_name = url.split('/')[-1]
            file_path = os.path.join(save_dir, file_name)
            with open(file_path, 'wb') as f:
                f.write(response.content)
                print('Downloaded image: %s' % url)
        else:
             print('Failed to download image: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

def crawl_images(url, save_dir):
    try:
        response = requests.get(url, timeout=5)
        if response.status_code == 200:
            soup = BeautifulSoup(response.content, 'html.parser')
            for img in soup.find_all('img'):
                img_url = img.get('src')
                if 'photo-' in img_url:
                    img_url = 'https:' + img_url.split('?')[0] + '?auto=compress&cs=tinysrgb&h=750&w=1260'
                    download_image(img_url, save_dir)
        else:
            print('Failed to crawl images from: %s' % url)
    except Exception as e:
        print('Error: %s' % e)

url = 'https://unsplash.com/s/photos/wallpapers'
save_dir = './wallpapers/'
if not os.path.exists(save_dir):
    os.mkdir(save_dir)
crawl_images(url, save_dir)

通过此程序可以爬取Unsplash上的高清壁纸,并保存到指定的文件夹内。注意,此网站的图片URL需要处理后才能直接下载使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫爬取图片的简单代码 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 详解Python如何实现对比两个Excel数据差异

    下面是详解Python如何实现对比两个Excel数据差异的完整实例教程。 1. 准备工作 首先需要安装Python的pandas模块,它可以用于读写Excel文件和进行数据处理。可以通过命令行输入以下指令来安装: pip install pandas 然后需要准备两个Excel文件,假设它们的文件名分别为old.xlsx和new.xlsx。这两个文件的格式应…

    python 2023年5月13日
    00
  • Python数据可视化之画图

    下面我将为你详细讲解“Python数据可视化之画图”的完整攻略。本攻略主要涉及到以下内容: 画图工具的选择:需要选择合适的画图工具,Python可视化库众多,如Matplotlib、Seaborn、Bokeh、Plotly等,每个工具都有各自的优劣和适用场景。 数据准备:数据是画图的基础,需要针对数据进行清洗、预处理和格式化。 选择画图类型:根据数据类型和需…

    python 2023年5月18日
    00
  • python 获取毫秒数,计算调用时长的方法

    获取当前时间毫秒数可以使用 datetime 库中的 datetime.now() 方法,其返回值是一个 datetime 对象,可以通过对象属性获取到秒数和毫秒数,并将其转化为毫秒数。 例如: import datetime start_time = datetime.datetime.now() # 执行代码 end_time = datetime.da…

    python 2023年6月2日
    00
  • Python 中的lambda函数介绍

    关于Python中的lambda函数,我可以给您提供一个详细攻略,以增加大家对它的了解。 1. 什么是lambda函数 lambda函数,也称作匿名函数,是一种可以在一行内定义、声明并使用的小型函数。与def语句定义的函数不同,lambda函数不需要函数名、return语句以及函数定义。 lambda函数主要用于编写需要一次性使用的代码段,比如作为函数参数进…

    python 2023年6月3日
    00
  • python+tkinter+动画图片+爬虫(查询天气)的GUI图形界面设计

    1.完整代码: import time import urllib.request #发送网络请求,获取数据 import gzip #压缩和解压缩模块 import json #解析获得的数据 from tkinter import * root1 = Tk() #用tkinter建立根窗口 root1.title(‘天气查询xgj@V1.0’)#窗口标题…

    爬虫 2023年4月10日
    00
  • python如何实现不可变字典inmutabledict

    在Python中,字典是一种映射类型的数据结构,它由一组键值对组成。字典中的键是唯一的,而值则可以是任何数据类型。通常情况下,字典中的元素是可变的,即可以添加、删除或修改,但在某些情况下,我们需要创建一个不可变的字典,即不允许修改其中的元素。 在Python中,默认的字典类型是可变的,但可以通过一些方式来实现不可变字典。下面是两种实现不可变字典的方法。 1.…

    python 2023年5月13日
    00
  • 网络爬虫的正则表达式

    0x00 re正则表达式     正则表达式:   通用字符串表达的框架 简洁表达一组字符串的表达式 针对字符串表达“简洁”和“特征”思想的工具   正则表达式在文本处理中的作用: 表达文本类型 同时查找和替换一组字符串 匹配字符串的全部或部分   正则表达式常用操作符:   正则表达式语法实例:     经典的正则表达式实例:   实例:匹配IP地址的正则…

    爬虫 2023年4月13日
    00
  • python3实现高效的端口扫描

    让我来详细讲解“Python3实现高效的端口扫描”的完整攻略。主要包括以下几个步骤: 步骤一:导入必要的模块和库 在Python中实现端口扫描需要用到socket、argparse和concurrent.futures这三个模块。其中socket是Python提供的网络编程模块;argparse是Python提供的命令行参数解析模块;concurrent.f…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部