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去除列表中的空值元素实战技巧

    当我们使用Python编程时,有时我们需要从列表中删除空值(例如空字符串,空列表,None等)的元素。以下是一些Python去除列表中的空值元素的实战技巧: 一、通过for循环遍历列表并删除空值元素 我们可以使用for循环和if语句遍历列表中的元素,并删除空值元素。下面是一个示例代码: my_list = ["apple", "…

    python 2023年5月14日
    00
  • Hadoop Streaming简单作业失败错误python

    【问题标题】:Hadoop Streaming simple job fails error pythonHadoop Streaming简单作业失败错误python 【发布时间】:2023-04-05 17:21:02 【问题描述】: 我是 hadoop 和 mapreduce 的新手,我正在尝试编写一个 mapreduce 来计算字数 txt 文件的前 …

    Python开发 2023年4月5日
    00
  • Python数组并集交集补集代码实例

    针对“Python数组并集交集补集代码实例”,我可以为您提供以下的详细攻略: 确定两个数组 首先,我们需要确定两个数组,我们可以使用Python中的列表对象来代替数组。以下是两个示例列表: list1 = [1, 2, 3, 4, 5] list2 = [4, 5, 6, 7, 8] 数组并集 要获取两个数组的并集,我们可以使用Python中的set对象来进…

    python 2023年6月6日
    00
  • 利用python获取想要搜索的数据

    获取想要搜索的数据是Python中常见的任务之一。Python提供了多种库和工具来实现数据获取,例如requests、BeautifulSoup、Selenium等。本文将详细讲解如何使用Python获取想要搜索的数据的完整攻略,包括使用requests和BeautifulSoup两个示例。 使用requests和BeautifulSoup获取想要搜索的数据…

    python 2023年5月15日
    00
  • python如何求圆的面积

    Python可以使用圆的半径计算圆的面积。圆的面积公式为: $S = \pi r^2$ 其中,$S$为圆的面积,$r$为圆的半径,$\pi$为圆周率,取约等于$3.14$。 下面是使用Python计算圆的面积的完整攻略: 首先,我们需要导入Python内置的数学库 math,它包含了常见数学运算的函数和常数。我们可以使用 math.pi 来获取圆周率的值。 …

    python 2023年6月3日
    00
  • Python 3 到 2 等效代码

    【问题标题】:Python 3 to 2 equivalent codePython 3 到 2 等效代码 【发布时间】:2023-04-05 16:15:01 【问题描述】: 这是来自 Ken Lambert 的书,基于 Python 3。 print(‘The median is’, end=” “) Python 2 中的等价物是什么?我认为是 ‘en…

    Python开发 2023年4月5日
    00
  • django从后台返回html代码的实例

    Django是一个流行的Python Web框架,可以用于构建各种类型的Web应用程序。以下是Django从后台返回HTML代码的实例的详细攻略: 创建Django项目 首先需要创建一个Django项目。可以使用命令创建一个名为myproject的Django项目: django-admin startproject myproject 创建Django应用…

    python 2023年5月14日
    00
  • Python聚类算法之DBSACN实例分析

    Python聚类算法之DBSCAN实例分析 DBSCAN是一种基于密度的聚类算法,可以自动发现任意形状的簇,并能够在噪声数据中识别出离群值。本文将详细讲解Python实现DBSCAN算法的整个攻略,包括算法原理、实现过程和示例。 算法原理 DBSCAN算法的基本思想是将数据点分为核心点、边界点和噪声点。核点是指在半径为ε内至少有minPts个点的点,边界点是…

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