Python学习笔记_获取高清图片

该博客介绍了如何使用Python结合Selenium库爬取Pexels网站的高清壁纸。首先创建目标文件夹,然后设置查询关键词和分页请求URL,通过伪装User-Agent防止被服务器识别。接着,遍历每个请求URL,获取图片链接并下载,最后将图片保存到本地。整个过程详细展示了Python爬虫和Selenium的结合应用。
摘要由CSDN通过智能技术生成

参考地址:python爬取pexels高清壁纸

  • 高清图片地址:https://www.pexels.com/zh-cn/
  • 支持中英文查询
  • 使用selenium仿浏览器发起请求
  • 分页请求获取图片地址,存入本地文件夹

1. 代码如下:

import requests
import re
import time
from selenium import webdriver
import os
from urllib import parse


# 创建文件夹
def makedir(filePath):
    E = os.path.exists(filePath)
    if not E:
        os.makedirs(filePath)
        os.chdir(filePath)
        print('文件夹<' + filePath + '>创建成功!')
    else:
        print('文件夹已存在!')


def start():
    start_time = time.time()

    # 1. 查询关键字:可以中文,可以英文
    searchKey = '苹果'
    # 2. 创建当前问关键字对应的文件夹
    makedir('F:\python\pic' + '\\' + searchKey + '\\')
    urlStr = 'https://www.pexels.com/zh-cn/search/' + parse.quote(searchKey) + '/?page={}'
    # 3. 定义查询页数
    urls = [
        urlStr.format(str(i)) for i in range(1, 3)]
    print('待处理地址有:' + str(urls))

    # UAC伪装,防止被服务器识别
    headers = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
    }
    ua = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
    }

    # 4. 遍历每一个网址,拿到对应图片url地址(仿谷歌浏览器去请求)
    # 存储下载地址的列表
    imgList = []
    for url in urls:
        try:
            options = webdriver.ChromeOptions()
            options.add_experimental_option('excludeSwitches', ['enable-logging'])
            web = webdriver.Chrome(options=options)
            web.get(url)
            # 由于这个动态加载的网页,使用selenium获取网页源代码
            wb_resp = web.page_source  # 返回源代码
            # 打开的网页要及时关闭
            web.close()
            # 使用正则表达式在we_resp中匹配找到下载地址,并且返回一个可以迭代的对象
            download_link = re.findall('data-big-src="(?P<src>.*?)"', wb_resp)
            # imgList追加合并
            imgList.extend(download_link)
            print('地址[' + url + ']已经完成图片url的获取')
        except ConnectionError:
            web.close()
            print("谷歌浏览器打开地址[" + url + ']出错')

    print('待下载图片为:' + str(len(imgList)) + '个')

    # 5. 遍历所有的下载地址,下载每一张图片
    for link in imgList:
        # 其中的一个下载地址:https://images.pexels.com/photos/1580271/pexels-photo-1580271.jpeg?auto=compress&amp;cs=tinysrgb&amp;h=750&amp;w=1260
        # 使用get方式来下载图片
        image_resp = requests.get(link, headers=ua)
        # 为了避免命名重复导致报错,使用其中的一直在变化的一串数字来作为文件名
        image_name = link.split("?")[0].split("/")[-1]
        # 文件名称
        # 创建Bytes形式的图片文件,把数据写入图片文件中,保存在文件中,打开方式为二进制写模式
        with open(r"f:\python\pic\\" + searchKey + '\\' + image_name, mode="wb") as f:
            f.write(image_resp.content)
        # 关闭
        image_resp.close()

    # 结束时间
    print('全部图片已完成下载,总耗时为:' + str(time.time() - start_time))


if __name__ == '__main__':
    start()

2. 控制台运行日志如下


在这里插入图片描述

3. 文件夹如下:

在这里插入图片描述

4. 部分文件如下:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值