养眼神器,爬取美女网站个人的写真套图

很久之前写的爬虫,一直没有放出来,这次放出来,单线程爬取,又有延时,所以有点慢。不过这也不耽误爬取了一个人的2万多张写真套图,因为这个人的很好看,哈哈哈。。。不过后来又全都删了,因为又发现了更好的网站。

爬取美女的个人写真套图,图片很养眼。。。都懂的。具体的步骤就不讲了,注释写的很详细。网站地址因为审核的原因也没有办法放。要是有人知道这个网址,在本文的网站地址处加上网址就可以养眼了。

最重要的一点:注意身体。。。

在这里插入图片描述

"""
requests库请求目标网址

xpath提取网页的图片地址

os模块建立文件夹存储图片

面向函数编程

个人写真套图爬取

"""
# 导入第三方库
import requests
from lxml import etree
import time
import os
from fake_useragent import UserAgent

# 定义随机的UserAgent
headers = {
    
    'User-Agent': UserAgent().random, 'accept-language': 'zh-CN,zh;q=0.9'}


# 定义得到首页的html的函数
def get_html(url):
    many_list_detail = []
    time.sleep(0.1)
    # 如果用.text()则出现乱码的情况,所以采用utf-8方式解码
    html = requests.get(url, headers=headers).content.decode('utf-8')
    many_list_detail.append(url)
    many_list_detail.append(html)
    return many_list_detail


# 定义解析详情页的函数
def detail_save_pages(many_list):
    # 新建空列表
    detail = []
    e = etree.HTML(many_list[1])
    # 解析每一层图片的总页数
    nums = e.xpath('//div[@class="imageset"]/span[@class="imageset-sum"]/text()')
    # 遍历循环每一页,总数为每一层图片的总页数
    page_nums = int(nums[0].split(' ')[1]) + 1
    for page in range(1, page_nums):
        # 由于每层图片的第一页地址与以后的地址不一样,需要单独处理。
        if page == 1:
            # 解析html文档
            e = etree.HTML(many_list[1])
            # xpath提取图片地址
            image = e.xpath('//div[@class="img_box"]/a/img/@src')
            # 将图片地址添加到列表中
            detail.extend(image)
        else:
            # 由于是请求每一层的全部图片,每一层的url各不相同,需要构造url,以首页url为基准,先以'_'号将url分割为两部分,中间加上'_'
            # 第二部分取以'_'分割的第二部分并再以'.'分割,加上'_' 加上page 加上.html
            urls = str(many_list[0]).split('_')[0] + '_' + str(many_list[0]).split('_')[1].split('.')[0] + '_' + str(
                page) + '.html'
            # 请求构造的url
            time.sleep(0.1)
            html = requests.get(url=urls, headers=headers).content.decode('utf-8')
            e = etree.HTML(html)
            # 提取图片的地址
            image = e.xpath('//div[@class="img_box"]/a/img/@src')
            detail.extend(image)
    # 遍历循环列表,添加到列表中
    for page_list, det in zip(range(1, page_nums), detail):
        # 请求每一张图片的url
        time.sleep(0.05)
        r = requests.get(url=det, headers=headers)
        # 定义每一张图片的名字
        file_name = det.split('/')[-1]
        # 写入图片文件
        with open(temp + '/' + file_name, 'wb') as f:
            print("正在下载:" + det + " 第" + str(page_list) + "张")
            f.write(r.content)


# 定义主函数

def main():
    # 创建文件夹
    if not os.path.exists(temp):
        os.mkdir(temp)
    # 首页的url地址
    url = '图片网址'
    many_html = get_html(url)
    detail_save_pages(many_html)


if __name__ == '__main__':
    temp = input("请输入需要保存的文件名称:\n")
    print("正在解析,请稍等...")
    main()

猜你喜欢

转载自blog.csdn.net/qq_46292926/article/details/127786834