python网络爬虫快速下载4K高清壁纸

python网络爬虫快速下载4K高清壁纸

此处给出下载壁纸的链接地址彼岸图网,进入网站之后,我们看到可以下载风景,游戏,动漫,美女等类型的4K图片,装逼一下,re库有贪婪匹配,那我们就写一个通用代码来下载网站全部的图片。

python网络爬虫快速下载4K高清壁纸_第1张图片
1. 观察页面布局,获取页面源代码

  • 打开彼岸图网的链接之后,进入开发者模式,快捷键为(Fn + F12),观察网页源代码发现,我们所要解析的图片都存放在了body标签下面的中的

    下面的所有的li标签下。
    python网络爬虫快速下载4K高清壁纸_第2张图片

  • 为了提示用户可下载的最大页码数量,我们还需要知道最大页码的存放位置,通过定位发现,最大页码存储在中的

    标签下面。

max_page = tree1.xpath('//div[@class = "page"]/a[7]/text()')[0]
  • 此时,我们已经找到了需要解析的图片和页码的位置,为接下来解析提供了基础。

2. 解析图片的地址和名称
接上述第一点,我们发现了图片的地址存储在li标签下面a标签img的属性src中,属性alt中存储着图片的名称。我们选择xpath进行解析,需要导入第三方库lxml。

img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
title_list = li.xpath('./a/img/@alt')[0] + ".jpg"

3. 进行持久性存储
在存储之前在子目录下面新建一个文件夹进行存储照片,之后将图片保存下来。

if not os.path.exists('./picLibs'):
            os.mkdir('./picLibs')
        for li in li_list:
            # ./表示的是当前目录下面进行操作
            img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
            title_list = li.xpath('./a/img/@alt')[0] + ".jpg"
            #print(title_list,img_list)

            img_data = requests.get(url = img_list,headers = headers).content
            img_path = './picLibs/' + title_list
            with open(img_path,'wb') as fp:
                fp.write(img_data)
                print(title_list,"保存成功!!!")

4. 代码和总结

import requests
from lxml import etree
import os
import sys

if __name__ == "__main__":

    message_list = ['fengjing','meinv','youxi','dongman','yingshi','mingxing','qiche','dongwu','renwu','meishi','zongjiao','beijing']
    print(
        '''
        软件简介:本程序主要下载4k图片,您可根据您的需求进行下载!!!
        软件作者:---喧啸
                 《下载选择目录》
        ******************************
        ** 风景 美女 游戏 动漫 影视 明星 **
        ** 汽车 动物 人物 美食 宗教 背景 **
        ******************************
        '''
    )
    choice = str(input("请输入您的下载选择(由于本人水平有限,输入时请输入对应的拼音):"))
    if choice in message_list:
        print("下载准备中,请稍后!!!")
    else:
        print("输入出错,请按照要求输入!!!")
        sys.exit()

    page_url = "http://pic.netbian.com/4k" + choice + "/"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
    }
    page = requests.get(url=page_url, headers=headers)
    page_txt = page.text

    # 数据解析 SRC属性值 ALT的值
    tree1 = etree.HTML(page_txt)
    max_page = tree1.xpath('//div[@class = "page"]/a[7]/text()')[0]
    print("温馨提示!!! "  + "您爬取的网页最大页码为",max_page)

    page = int(input("请输入最大页码:"))
    for i in range(1,page+2):
        url = page_url + "index_" + str(i) + ".html"

        response = requests.get(url = url,headers = headers)
        response.encoding = "gbk"
        page_text = response.text

        #数据解析 SRC属性值 ALT的值
        tree = etree.HTML(page_text)
        li_list = tree.xpath('//div[@class = "slist"]//li')
        if not os.path.exists('./picLibs'):
            os.mkdir('./picLibs')
        for li in li_list:
            # ./表示的是当前目录下面进行操作
            img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
            title_list = li.xpath('./a/img/@alt')[0] + ".jpg"
            #print(title_list,img_list)

            img_data = requests.get(url = img_list,headers = headers).content
            img_path = './picLibs/' + title_list
            with open(img_path,'wb') as fp:
                fp.write(img_data)
                print(title_list,"保存成功!!!")

上述代码中,我们打印输出了一个提示信息,提供了可视化的提示效果,此代码还有很多修改和完善的地方,欢迎大家关注我的公众号来交流和学习,同时我将代码也进行了打包,需要的小伙伴留言私信我哦!
python网络爬虫快速下载4K高清壁纸_第3张图片

你可能感兴趣的:(笔记,学习历程,项目实战)