吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4119|回复: 24
收起左侧

[Python 转载] python爬取 个性图片【70行】

  [复制链接]
从零学习的歪经小 发表于 2020-9-5 11:18
终于到了周末,昨天打开吾爱看到了一位老哥写@三木猿 的一个爬虫,我激动的打开pycharm本想白嫖,然而,发现一直爬不到,当然,这不可能是代码问题,我就看了看网址,发现打开是404

然后就去看看这个主页,发现能打开,然后看到有很多分类就自己动手写了个带分类了。

虽然那位老哥的代码只有40行,但我觉得,还是挺难搞明白的。
就把自己的注释了一下
我,觉,得,新,手,应,该,能,勉,强,看,的,懂,了。

GBF_W%QHOVXGWE[K_C~2D@I.png
没弄多线程了,我写完,老师又在催打卡,我想研究一下钉钉那个,智慧校园的打卡任务。

欢迎白嫖~
[Python] 纯文本查看 复制代码
# -*- 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()              #开始运行主程序


觉得还行就丢 点 热 心 值 也 OK

免费评分

参与人数 18吾爱币 +16 热心值 +15 收起 理由
OUTSIDER123 + 1 + 1 谢谢@Thanks!
xiaodai_568 + 1 我很赞同!
冷酷到底 + 1 谢谢@Thanks!
隔壁老司机i + 1 + 1 我很赞同!
魔屏 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
boycc1974 + 1 谢谢@Thanks!
tslgyfx + 1 热心回复!
paguco + 1 + 1 谢谢@Thanks!
YIHAN1008 + 1 + 1 谢谢@Thanks!
a1403044168 + 1 我很赞同!
1113 + 1 + 1 热心回复!
buchidayu + 1 + 1 用心讨论,共获提升!
hxw0204 + 1 + 1 谢谢@Thanks!
山君21 + 1 + 1 谢谢@Thanks!
jin866 + 1 + 1 谢谢@Thanks!
fenglianyun + 1 + 1 谢谢@Thanks!
余y月n + 1 + 1 谢谢@Thanks!
铩羽神音 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq926494 发表于 2020-9-28 17:51
text = text.replace('\n', '').replace('/', '').replace('\\', '').replace(':', '').replace('*', '').replace('"', '').replace('<', '').replace('>', '').replace('|', '').replace('?', '')
35行这个,可以用正则优化下,还有下载图片前,判断图集是否存在,要是只下了一张结束了,再次运行,就不会接着下了吧,
 楼主| 从零学习的歪经小 发表于 2020-9-5 16:26
天地我有 发表于 2020-9-5 15:23
今天刚刚接触py  上面是不是还要cmd ----pip install  requests ; pip install wheel;pip install lxml---- ...

是这3个。刚接触,可以去百度找一些国内镜像源,这样以后下这些库也能快点。
铩羽神音 发表于 2020-9-5 11:40
这个好啊,终于有一个可以简单上手爬图的教程了,可以学习一波
 楼主| 从零学习的歪经小 发表于 2020-9-5 11:47
铩羽神音 发表于 2020-9-5 11:40
这个好啊,终于有一个可以简单上手爬图的教程了,可以学习一波

嘿嘿,加油
silent小泷 发表于 2020-9-5 11:50
厉害了。大碗面。
fenglianyun 发表于 2020-9-5 11:55
这个真是很火爆的语言!不知道好不好学习?零基础开始?
hxw0204 发表于 2020-9-5 13:22
谢谢分享,学习爬图用
 楼主| 从零学习的歪经小 发表于 2020-9-5 14:43
fenglianyun 发表于 2020-9-5 11:55
这个真是很火爆的语言!不知道好不好学习?零基础开始?

学习,应该是最好学的了吧。。慢慢学,零基础也没事啊。
三木猿 发表于 2020-9-5 14:58
楼主厉害啦
抹杀你的浪漫 发表于 2020-9-5 15:08
大佬 能不能带带我
nnnr 发表于 2020-9-5 15:08
期待楼主钉钉那个打卡  天天早起扛不住啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表