python 爬取图集谷妹子图片,按自己喜好抓取一页图片,有兴趣二次开发 抓全站

python 爬取图集谷妹子图片,按自己喜好抓取一页图片,有兴趣二次开发 抓全站#-*-coding:utf-8-*-importrequests,time,osfromlxmlimportetreefromurllibimportrequest

大家好,又见面了,我是你们的朋友全栈君。

# -*- coding: utf-8 -*-

import requests, time, os
from lxml import etree
from urllib import request

name_url = {}  # 创建一个字典


def sort():
    req = requests.get('https://www.tujigu.com/')  # 首页
    req.encoding = 'utf-8'  # 中文出现乱码,调整编码
    req_xp = etree.HTML(req.text)  # 装换为xp,text是为了变成字符串形式,不然会报错
    text_list = req_xp.xpath('//*[@class="menu"]/li/a/text()|//*[@id="tag_ul"]/li/a/text()')  # 读取分类名
    href_list = req_xp.xpath('//*[@class="menu"]/li/a/@href|//*[@id="tag_ul"]/li/a/@href')  # 获取网址
    for href, text in zip(href_list, text_list):
        name_url[text] = href  # 已分类名做为key,网址作为值
    return text_list  # 返回分类名列表,好为后面打印分类名


def dow(url, name):
    if not os.path.exists("图集谷"):  # 检查并创建文件夹,强迫症~~~
        os.mkdir('图集谷')
    if not os.path.exists("图集谷/{}".format(name)):  # 同上,创建分类
        os.mkdir('图集谷/{}'.format(name))
    atlas = requests.get(url)  # get你选择的网址
    atlas.encoding = 'utf-8'  # 同上,乱码问题
    atlas_xp = etree.HTML(atlas.text)
    text_list = atlas_xp.xpath('//*[@class="biaoti"]/a/text()')  # 获取图集名
    href_list = atlas_xp.xpath('//*[@class="biaoti"]/a/@href')
    for text, href in zip(text_list, href_list):
        req = requests.get(href)
        req.encoding = 'utf-8'
        req_xp1 = etree.HTML(req.text)
        src_list = req_xp1.xpath('//*[@class="content"]/img/@src')
        num = 1  # 创建图片名,美观
        # 下面是为了删除一些图集中包含了文件夹不能创建的符号
        text = text.replace('\n', '').replace('/', '').replace('\\', '').replace(':', '').replace('*', '').replace('"',
                                                                                                                   '').replace(
            '<', '').replace('>', '').replace('|', '').replace('?', '')
        if not os.path.exists("图集谷/{}/{}".format(name, text)):  # 检测此图集是否下载过
            os.mkdir("图集谷/{}/{}".format(name, text))
            for src in src_list:
                request.urlretrieve(src, "图集谷/{}/{}/{}.jpg".format(name, text, num))  # 保存图片
                num += 1
            print('{}-------------成功下载'.format(text))
        else:
            print('{}--------------内容已下载'.format(text))


def get():
    while 1:
        text_list = sort()  # 从首页获取分类信息和url
        i = 1  # 序号
        for text in text_list[2:-1]:  # 从2到-1是为了去除没用的分类
            print('%02d.{}'.format(text) % i)  # 打印分类信息
            i += 1
        opt = input('输入您要爬取的内容(首页为默认)>>>>> ')
        if not opt.isdigit():  # 判断输入内容
            print('傻X输入中文懂么')
            time.sleep(3)
            continue
        opt = int(opt)
        if not 0 < opt < len(text_list) - 3:  # 判断输入内容
            print('输入范围错误')
            time.sleep(3)
            continue
        opt += 1  # 以为删除了首页,所以+1才能正确选择分类
        url = name_url[text_list[opt]]  # 获取你选择的地址
        name = text_list[opt]  # 分类的名字,好创建一个文件夹放入
        print('{}====开始爬取'.format(name))
        dow(url, name)  # 开始运行下载程序
        input('爬取完成,按下回车重新开始')


if __name__ == '__main__':
    get()  # 开始运行主程序

安装好库,选择自己喜好,就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154733.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 金山词霸2007升级v10.0.0.4

    金山词霸2007升级v10.0.0.4词霸2007不但产品功能更加完善,而且在用户的体验方面也做了很多改进。首先,词霸07收录了150余本权威词典,70余个专业词库,同时支持28种常备资料线实时更新,让您随时拥有奥运知识、常用工具(货币单位等)等最新的资料;其次全面支持简体中文、英文、日文查词功能,满足更多用户需求;值得一提的是,词霸07收录了与朗文、牛津、韦氏齐名四大词典的《美国传统词典》最新版,英汉、英英双解,包含96000余词条

    2022年7月15日
    19
  • 科研伦理与学术规范期末考试1题库「建议收藏」

    科研伦理与学术规范期末考试1题库「建议收藏」**科研伦理与学术规范期末考试1题库**自行复制到自己的文档当中便于搜索1.科研伦理与学术规范引论科研伦理与学术规范引论试题1、下列说法错误的是?A、所有的规范的评判都涉及到“善恶正邪”的价值判断B、伦理学已经从传统的以人为中心走向现代的以行为为中心C、现代伦理学主要关注以行为、准则、规范、义务D、规范则未必均是在道德层面上具有调整性参考答案:A2、哈佛模式下的引证规范的特点是?A、注释引证式B、插句式C、循环数字编码式D、MLA引用格式参考答案:B3、关于科研伦理和学术

    2022年7月11日
    18
  • mysql 数据库连接_java连接oracle数据库

    mysql 数据库连接_java连接oracle数据库原理:Oracle数据网关,就像一个桥梁,贯通oracle数据库和non-oracle数据库。在配置过程中,我们经常讲到的三个重要文件:第一、tnsnames.ora;第二、lisener.ora;第三、init.ora。他们是如何工作呢?比如对一个连接数据库的查询,select*from“tablename”@linkdbname;oracle首先从linkdbname开始,通过dba_d…

    2025年11月15日
    2
  • oracle设置用户密码永不过期_oracle密码设置无限期

    oracle设置用户密码永不过期_oracle密码设置无限期1、查看用户的proifle是哪个,一般是default:sql>SELECTusername,PROFILEFROMdba_users;2、查看指定概要文件(如default)的密码有效期设置:sql>SELECT*FROMdba_profilessWHEREs.profile=’DEFAULT’ANDresource_name=’PASSWORD_LIFE_TIME’;3、将密码有效期由默认的180天修改成“无限制”:sql>ALTERPROF

    2022年7月28日
    43
  • 常用邮件服务器软件(邮件服务器软件哪个好)

    常见邮件服务器软件1.微软ExchangeServer[3]​2.TurboMail3.Coremail4.U-Mail5.lifecube网络宝邮件服务器6.MDaemonServer7.WinWebMail8.IceWarp/MerakMailServer9.LotusDomino/Notes10.Postfix/Sendmail/Qm…

    2022年4月17日
    63
  • 关于VS中的sln文件[通俗易懂]

    关于VS中的sln文件[通俗易懂]sln文件我们在应用VC6以前,发现的是dsp和.dsw文件,打开dsw文件可以打开整个工程VS.net2002以后是.vcproj和.sln.sln对应以前的.dsw.vcproj对应以前的.dspvcproj是工程文件,sln是解决方案文件。一个解决方案里面可以包含多个工程。打开vcproj文件编译不了可能是因为这个工程里面用到了同一个解决方案中其它工程的东西。Vi

    2022年4月30日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号