美女壁纸批量下载之普通篇

爱美之心人皆有之,看到漂亮的美女壁纸总想据为己有,偶然间发现一个比较不错的网站,遂,爬
网站:4K 美女图片

美女壁纸批量下载之普通篇

美女壁纸批量下载之普通篇

一个页面 21 张图片,一共 195 页,想想就开心
美女壁纸批量下载之普通篇

废话不多说,撸起袖子就是干,代码如下:

import requests
import os
import re
import time


class DownLoad_Imgs():
    """下载图片"""

    def __init__(self, path):
        # 主页URL
        self.basic_url = 'http://pic.netbian.com'
        # 要下载的图片网页
        self.html_url = "http://pic.netbian.com/4kmeinv/"
        # 请求头
        self.header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
        }
        # 图片保存位置
        self.path = path

    def get_images_info(self, url):
        """
        获取本URL页面所有图片详情页面的URL
        :param url: 即将下载图片页面的URL
        :return: URL列表
        """
        resp = requests.get(url, headers=self.header)
        content = resp.text
        path = '<a href="(/tupian.+?)" target="_blank">'
        path = re.compile(path, re.M)
        url_list = path.findall(content)
        view_urls = []
        for url in url_list:
            u = self.basic_url + url
            view_urls.append(u)
        return view_urls

    def get_images(self, view_url):
        """
        获取图片URL以及标题
        :param view_url: 图片详情页面的URL
        :return: 图片URL以及名称
        """
        path = '<img src="(.+?)" data-pic=".+?title="(.+?)"'
        path = re.compile(path)
        resp = requests.get(view_url, self.header)
        content = resp.content.decode("gbk")
        pic_url, pic_title = path.findall(content)[0]

        return pic_url, pic_title


    def download(self, pic_url_title):
        """
        下载图片
        :param pic_url_title: 图片URL及标题
        :return:
        """
        pic_url, pic_title = pic_url_title
        # 下载
        pic_resp = requests.get(self.basic_url + pic_url, self.header)
        image_path = self.path + os.sep + str(pic_title) + '.jpg'
        print(pic_url, pic_title)
        with open(image_path, 'wb') as f:
            f.write(pic_resp.content)


    def run(self):
        for i in range(1, 196):
            # 拼接URL
            if i == 1:
                url = dl.html_url
            else:
                url = dl.html_url + "index_" + str(i) + ".html"
            # 获取图片详情页面URL
            view_urls = dl.get_images_info(url)
            # 获取高清图片URL及标题
            for view_url in view_urls:
                pic_url_title = dl.get_images(view_url)
                # 下载图片
                dl.download(pic_url_title)
            print("第%s页, 耗时%s秒" % (i, time.time() - t))


if __name__ == '__main__':
    t = time.time()
    images_path = "./美女"
    if not os.path.exists(images_path):
        os.makedirs(images_path)
    dl = DownLoad_Imgs(images_path)
    dl.run()
    print("total cost:", time.time() - t)

运行效果:
美女壁纸批量下载之普通篇

美女壁纸批量下载之普通篇

可以发现,下载了 36 页的时候,已经花费了 719 秒了,平均下载一页需要 719/36 秒,也就是说,全部下载结束需要 719/36*195 秒,相当于一个多小时,我的天,好像速度有点儿慢啊,所以说,这一篇只是普通篇

欲知如何提高速度,请听下回分解