还在一张张的保存图集?教你用27行代码一件获取

这篇博客介绍了如何使用Python的requests和parsel库,通过27行代码实现从网站批量下载图片。首先安装所需模块,然后通过循环获取多页数据的链接,解析HTML提取图片链接,最后请求图片并保存到本地文件夹。教程详细且实用,适合Python初学者和爬虫爱好者。
摘要由CSDN通过智能技术生成

嗨嗨,你们好~

对于一张一张的保存图片太麻烦了,教你如何利用python一件获取写真图集 — 只需要27行代码 !

请添加图片描述

来吧,先准备一下。

首先我们需要自己安装一下这两个第三方模块 :

requests >>>  # pip install requests
parsel   >>>  # pip install parsel

不会安装的朋友,键盘按住win+r在弹出来的运行框,输入cmd按确定就好了,然后弹出黑色的框框,即命令提示窗口,输入上面的注释,然后按回车即可安装成功。

OK ,我们继续 。

实现步骤:
  • 第一步:找数据对应的链接地址
  • 第二步:python代码发送指定地址的请求
  • 第三步:数据解析(筛选 过滤咱们需要的数据)

解析了每一个相册地址后

  1. a 创建每一个相册的文件夹
  2. b 请求每一个相册详情页

(1) 发送请求
(2) 解析数据 提取图片链接
(3) 依次请求图片

  • 第四步:保存数据

请添加图片描述

代码部分:

import requests
import parsel   # 解析数据
import os
for page in range(1, 12):
    response = requests.get(f'https://www.jdlingyu.com/tag/%e8%85%bf%e6%8e%a7/page/{page}')
    # <Response [200]>: 请求成功
    # 静态页面的网页源代码
    # 把静态页面的 字符串 变成可选的对象
    selector = parsel.Selector(response.text)
    # 3. 数据解析(筛选 过滤咱们需要的数据)
    # re: 可以直接提取网页字符串数据
    # css / xpath: 通过HTML标签进行提取
    lis = selector.xpath("//ul[@class='b2_gap ']/li")
    for li in lis:
        # text(): 提取标签的文本内容
        title = li.xpath('.//h2/a/text()').get()
        print(f'-------------正在爬取{title}-------------')
        # a 如果当前文件夹不存在 那么就新建一个
        if not os.path.exists('./img/'+title):
            os.mkdir('./img/'+title)
        # 每一个相册所在的 网页地址
        # 获取a标签属性内容 /@src
        href = li.xpath('.//h2/a/@href').get()
        # b 请求每一个相册详情页
        data_html = requests.get(href).text
        # 把字符串对象转变为 可选的selector对象
        selector_2 = parsel.Selector(data_html)
        img_p = selector_2.xpath('//div[@class="entry-content"]/p')
        for img in img_p:
            # (2) 解析数据 提取图片链接
            img_list = img_p.xpath('.//img/@src').getall()
            for img_1 in img_list:
                # content: 获取二进制数据 图片 视频 音频
                # 文本: text
                try:
                    img_data = requests.get(img_1).content
                # 图片文件名
                except:
                    continue
                img_name = img_1.split('/')[-1]
                with open(f'img\\{title}\\{img_name}', mode='wb') as f:
                    f.write(img_data)
                    print('下载完成:', img_name)

好了
分享到这里也就结束了,感兴趣的朋友快去试试吧 !
我是麻薯,我们下篇文章见 ~

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值