python爬取某网站上的图片2

本文介绍了如何使用Python爬虫批量请求服务器上的图片数据。首先找到数据链接,然后设置user-agent伪装浏览器发送GET请求,获取HTML内容。接着利用parsel库解析HTML,提取相册标题和链接,为每个相册创建文件夹并下载其中的图片。最后,保存图片到本地文件系统。
摘要由CSDN通过智能技术生成
"""
爬虫:模拟客户端<浏览器,app应用>批量请求服务器数据

爬虫数据采集的一般步骤:
1.找数据对应的链接地址
2.发送指定地址请求,请求数据
3.数据提取(提取需要的数据)
4.数据保存
"""
import requests  # 数据请求,第三方模块:pip install requests
import parsel  # 数据解析模块,第三方模块:pip install parsel
import os  # 内置模块,文件目录操作的模块

# 1.找数据对应的链接地址
url = "https://www.jdlingyu.com/tag/%e5%b0%91%e5%a5%b3"

# user-agent:浏览器的身份标识
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

# 2.发送指定地址请求,请求数据
response = requests.get(url, headers=headers)
# text 获取对象里面的文本数据
html_str = response.text
# print(html_str)

# 3.数据提取(提取需要的数据)  html数据, xpath提取 parsel
# parsel库可以解析HTML和XML,并支持使用Xpath和CSS选择器对内容进行提取和修改,同时融合了正则表达式的提取功能
selector = parsel.Selector(html_str)  # 转换数据类型

# 提取所有的li标签
lis = selector.xpath('//div[@id="post-list"]/ul/li')

for li in lis:
    # 获取标题
    pic_title = li.xpath('.//h2/a/text()').get()  # 相册标题,用于保存相册的文件夹名
    # 获取相册链接
    pic_url = li.xpath('.//h2/a/@href').get()  # 相册链接
    # print(pic_title, pic_url)
    print(f"正在下载相册:{pic_title}")

    dir_name = 'images/' + pic_title
    # 创建相册文件夹
    # 判断该文件夹是否存在
    if not os.path.exists(dir_name):
        # 不存在则创建
        os.mkdir(dir_name)

    # 发送相册详情页地址请求
    response_pic = requests.get(url=pic_url, headers=headers).text  # 详情页数据

    # 解析详情页中的图片地址
    selector_2 = parsel.Selector(response_pic)
    # 获取所有链接
    pic_url_list = selector_2.xpath('//div[@class="entry-content"]//img/@src').getall()  # 所有图片链接

    # 遍历每一个图片链接
    for pic_url in pic_url_list:
        # 发送图片链接请求,获取图片数据,图片数据是二进制数据
        # content 提取二进制数据
        img_data = requests.get(url=pic_url, headers=headers).content

        # 4.数据保存
        # 4.1 准备图片的文件名
        file_name = pic_url.split('/')[-1]  # -1:取列表中的最后一个元素
        # 4.2 保存图片
        # w-->write b-->binary
        with open(dir_name + '/' + file_name, mode='wb') as f:
            f.write(img_data)
            print('保存完成:', file_name)

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFXaCk3C-1657853264911)(assets/20220715104523.jpg)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值