自定义分辨率爬取,高清大图任你爬!!!

文章目录

    • 前言
    • 一、网页分析
    • 二、完整代码及代码分析
    • 三、图片辅助分析
    • 四、运行结果

更多博主开源爬虫教程目录索引

前言

本次博主以爬取电脑壁纸为例,大家仔细看过这篇博文后,都能够照着套出来,爬取自己想爬取的壁纸。

以下分辨率都能爬取,博主爬取的是1920×1080,绝对的高清大图,看下去,你绝对会有所收获
在这里插入图片描述

自定义分辨率爬取,高清大图任你爬!!!_第1张图片

一、网页分析

进入ZOL壁纸网站


点击电脑壁纸

随便点一个进去

OK,看到这里心里就有个大概流程了

再看网页的数据是否是动态加载的,答案是否

自定义分辨率爬取,高清大图任你爬!!!_第2张图片
注意了,以下是个要点
自定义分辨率爬取,高清大图任你爬!!!_第3张图片
赋值打印的html到html文件中,发现

这是一个网页编码问题,确实是一个常见问题
查看网页编码

  1. 方式一
    自定义分辨率爬取,高清大图任你爬!!!_第4张图片
    可见网页编码为GBK
    在这里插入图片描述
  2. 方式二
    自定义分辨率爬取,高清大图任你爬!!!_第5张图片

虽然两种方式得到的编码不一样,但都能解决问题

所以我们爬取的时候要记得设置编码


二、完整代码及代码分析

import requests
from bs4 import BeautifulSoup
import os


#请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.52"
}


#爬取下载
def download(response):
    data = BeautifulSoup(response.text, "lxml")
    #参考图1,每一个li都是一个系列的图片
    ul_list = data.find_all(class_="photo-list-padding")
	#遍历
    for ul in ul_list:
        # 基础路径
        path = "./图库"
        # 解析
        li = BeautifulSoup(str(ul), "lxml")

        # 详情页网址
        page_url = "http://desk.zol.com.cn" + li.find(class_="pic")["href"]

        # 图片系列名称
        name = li.find("em").text
        # 拼接保存路径(根据图片系列不同,分类保存)
        path = path + "/" + name

        # 如果不存在就创建该文件夹
        if not os.path.exists(path):
            os.makedirs(path)

        # 详情页请求
        page_response = requests.get(url=page_url, headers=headers)
        # 设置页面编码
        page_response.encoding = "GB2312"
        page_data = BeautifulSoup(page_response.text, "lxml")
		
		#参考图2
        li_list = page_data.find(class_="photo-list-box").find_all("li")
        #图片名称,每张图片都没有确切的名称,所以我是用1234来命名
        i = 0
        for page_li in li_list:
            i += 1
            image = BeautifulSoup(str(page_li), "lxml")
            #参考图3
            #从第5张图片开始,参数名称有所不同,所以需要判断
            if i > 4:
                img_url = image.find("img")["srcs"]
            else:
                img_url = image.find("img")["src"]

            # 替换掉144x90的分辨率,设置为1920x1080分辨率
            #参考图4,也可以替换成你自己想要的分辨率,也可以访问下载
            image_url = img_url.replace("144x90", "1920x1080")

            print(image_url)
            # 发起图片请求,content返回的是bytes,二级制型的数据。
            res = requests.get(url=image_url, headers=headers).content

            # 图片保存
            with open(path + "/" + str(i) + ".jpg", 'wb')as f:  # 以wb方式打开文件,b就是binary的缩写,代表二进制
                f.write(res)
        print("+" * 40)



if __name__ == "__main__":
	#进行多页爬取,参考图5
    for i in range(3):
        url = "http://desk.zol.com.cn/pc/"+str(i + 1)+".html"

        response = requests.get(url=url, headers=headers)
        response.encoding = "GB2312"
        download(response)


三、图片辅助分析

图1
自定义分辨率爬取,高清大图任你爬!!!_第6张图片


图2
自定义分辨率爬取,高清大图任你爬!!!_第7张图片


图3
自定义分辨率爬取,高清大图任你爬!!!_第8张图片
自定义分辨率爬取,高清大图任你爬!!!_第9张图片

自定义分辨率爬取,高清大图任你爬!!!_第10张图片
自定义分辨率爬取,高清大图任你爬!!!_第11张图片


图4
自定义分辨率爬取,高清大图任你爬!!!_第12张图片

自定义分辨率爬取,高清大图任你爬!!!_第13张图片

在这里插入图片描述


图5
自定义分辨率爬取,高清大图任你爬!!!_第14张图片


四、运行结果

自定义分辨率爬取,高清大图任你爬!!!_第15张图片

自定义分辨率爬取,高清大图任你爬!!!_第16张图片
自定义分辨率爬取,高清大图任你爬!!!_第17张图片


博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!
更多Python爬虫有关文章
在这里插入图片描述

你可能感兴趣的:(Python爬虫,python,爬虫,数据分析,requests,pycharm)