python抓取网站的图片并下载到本地的方法

让我来详细讲解一下“Python抓取网站的图片并下载到本地的方法”的完整攻略。

步骤一:导入依赖库

我们需要导入requestsosre三个依赖库,确保能够正常进行HTTP请求、保存图片文件和正则匹配字符串:

import requests
import os
import re

步骤二:定位图片链接

将要抓取的图片所在的页面URL,使用requests库向该URL发送HTTP请求,并通过正则表达式匹配其中的图片链接。举个栗子,假设要抓取的页面URL是https://www.example.com,图片链接是以.jpg结尾的,则可以使用以下代码:

url = 'https://www.example.com'
response = requests.get(url)
pattern = re.compile(r'"(https?://[^"]+\.(jpg))"')
links = re.findall(pattern, response.text)

这样,links就是一个列表,其中保存了所有图片链接的地址。

步骤三:下载图片

我们要把抓取到的图片下载到本地。为了确保不重复下载,我们可以在本地建立同样的目录结构,并以图片名称作为文件名进行保存。具体实现代码如下:

for link in links:
    src = link[0]
    filename = src.split('/')[-1]
    directory = './images/' + '/'.join(src.split('/')[3:-1])
    if not os.path.exists(directory):
        os.makedirs(directory)
    with open(directory+'/'+filename, 'wb') as f:
        f.write(requests.get(src).content)

这段代码会遍历所有抓取到的图片链接,分别下载并保存到以图片链接路径为名的文件夹内。如果文件夹不存在,就新建一个。

为了方便用户使用,我们可以将上述代码封装在一个函数中,并在函数中返回本次抓取的图片数量,示例如下:

def download_images(url):
    response = requests.get(url)
    pattern = re.compile(r'"(https?://[^"]+\.(jpg|jpeg|png|gif))"')
    links = re.findall(pattern, response.text)
    count = 0
    for link in links:
        src = link[0]
        filename = src.split('/')[-1]
        directory = './images/' + '/'.join(src.split('/')[3:-1])
        if not os.path.exists(directory):
            os.makedirs(directory)
        if not os.path.exists(directory+'/'+filename):
            with open(directory+'/'+filename, 'wb') as f:
                f.write(requests.get(src).content)
            count += 1
    return count

以上就是“Python抓取网站的图片并下载到本地的方法”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python抓取网站的图片并下载到本地的方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python Xpath语法的使用

    XPath是一种用于在XML和HTML文档中定位元素的语言。在Python中,可以使用XPath语法来解析HTML和XML文档。以下是详细的攻略,介绍如何使用Python爬虫XPath语法的使用: 安装lxml 在使用XPath之前,需要先安装lxml。可以使用pip命令来安装lxml。以下是一个示例,演示如何安装lxml: pip install lxml…

    python 2023年5月14日
    00
  • Python计算矩阵的和积的实例详解

    Python计算矩阵的和积的实例详解 在计算机科学和数学中,矩阵和积是一种常见的运算操作。在Python中,我们可以使用NumPy库来计算矩阵的和积。 第一步:导入NumPy库 在使用NumPy库之前,我们需要先导入它。 import numpy as np 第二步:创建矩阵 在计算矩阵的和积之前,我们需要先创建两个矩阵。这里我们以两个二维数组为例。 a =…

    python 2023年6月5日
    00
  • Python入门篇之字典

    关于Python字典的入门篇攻略,我来给你详细的讲解。 什么是字典? Python中的字典(Dictionary)是一种无序的、可变的数据类型,它由键(key)和值(value)组成,键和值之间用冒号 “:” 分隔,多个键值对用逗号分隔,整个字典用一对大括号 “{}” 括起来。 例如,下面这个字典记录了几种水果的名称及其价格: fruits = {‘appl…

    python 2023年5月13日
    00
  • python实现复制大量文件功能

    下面是我给您准备的“Python 实现复制大量文件功能”的完整攻略。 1. 确定需求 在实现复制大量文件功能之前,需要先明确需求,明确要复制哪些文件,将复制的文件复制到哪个路径,是否需要保留原文件的创建时间和修改时间等。这些需求可以根据具体项目情况进行调整。 2. 导入模块 Python 中复制文件需要使用 shutil 模块。因此,需要先导入 shutil…

    python 2023年6月5日
    00
  • python pygame入门教程

    Python pygame是一个可以帮助用户创建2D游戏的模块。在本教程中,我们将介绍如何使用Python pygame模块创建简单的2D游戏。 安装 pygame 在开始创建2D游戏前,您需要安装pygame。可以使用以下命令安装pygame: pip install pygame 安装完成后,您可以开始创建您的2D游戏。 初始化 Pygame 在您创建游…

    python 2023年5月30日
    00
  • Python 3.x 新特性及10大变化

    Python 3.x 新特性及10大变化 Python 3是Python语言的一个主要版本,它在语言基础、标准库以及各种工具和模块上都引入了许多新特性。以下是Python 3.x相对于Python 2.x的主要变化: 1. print函数 在Python 2.x中,print语句是一个语句,不是一个函数,它通常带有一个逗号分隔的参数列表,例如 print “…

    python 2023年5月13日
    00
  • python HZK16字库使用详解

    Python HZK16字库使用详解 HZK16字库是中文汉字点阵库的一种,全称为“汉字库”,包含了GB2312-80标准收录的所有一级汉字、二级汉字和部分三级汉字,占用空间大概为6.2MB。在Python中使用HZK16字库可以实现中文汉字的显示,特别是在单片机等嵌入式系统中,更是使用广泛。 准备工作 需要下载HZK16字库文件,可以通过网络查找相关资源进…

    python 2023年5月20日
    00
  • Python2及Python3如何实现兼容切换

    要实现Python2与Python3的兼容切换,主要需要以下几个步骤: 确定使用的Python版本:首先要确定当前使用的Python版本是Python2还是Python3,可以通过在命令行中输入python -V来查看当前使用的Python版本。 确认代码是否兼容:Python2和Python3之间存在语法差异,特别是在一些高级特性和某些内置函数的使用上,需…

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