吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

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

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

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

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

欢迎白嫖~
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- 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, 2025-4-10 22:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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