吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3943|回复: 55
收起左侧

[Python 转载] 7行代码爬妹子?,学习点“多线程”技术下载,速度比我以前单个下载快多了

  [复制链接]
学海AoA无涯 发表于 2020-8-18 00:51
本帖最后由 学海AoA无涯 于 2020-8-18 00:53 编辑

print(‘hello,吾爱吾爱’)
今天学习了一下多线程
先来7行代码,再说正事
[Python] 纯文本查看 复制代码
import requests
for i in range(1, 12000):
    picurl = 'https://gitee.com/kevin2046/picture/raw/master/img/' + str(i) + '.jpg'
    print('(≧^.^≦)喵~~~正在下载:' + str(i) + '.jpg')
    pic = requests.get(picurl).content
    with open(str(i) + '.jpg', 'wb') as f:
        f.write(pic)

EXE打包文件https://wwe.lanzouj.com/iNVhKfqkhxg

说正事:多线程
我还没有完全搞明白多线程到底怎么回事
请大佬指点指点多线程
试了一下,发现爬虫速度确实要比我之前下载的速度快不少
这是在7行代码的基础上研究的
发文之前写了注释,不想打字了,看注释吧
代码致上
[Python] 纯文本查看 复制代码
import threading # 导入多线程库
import requests
import os
'''
URL替换:
https://gitee.com/kevin2046/picture/raw/master/img/
https://gitee.com/kevin2046/pic/raw/master/img/
https://gitee.com/kevin2046/pict/raw/master/img
https://gitee.com/kevin2099/pict/raw/master/img/
https://gitee.com/kevin2099/pic/tree/master/img/
https://gitee.com/kevin2099/tupian/tree/master/img/
https://gitee.com/kevin2099/tu/tree/master/img/
'''
i = 0 # 先定义一个全局变量i,用于猜测图片的ID
def get_pic(i) : # 定义下载图片的函数
    # 拼接图片URL,将主函数while中的i传到这里,相当于是图片的ID
    picurl = 'https://gitee.com/kevin2046/picture/raw/master/img/' + str(i) + '.jpg'
    if os.path.exists('图片\\%s.jpg'%i): # 判断图片已经下载
        print('图片%s.jpg已下载!' % i) # 已下载就不再下载
    else: # 没有下载才下载
        pic = requests.get(picurl).content # 取得链接
        rec = len(pic) # 取得图片的大小
        if rec != 52: # 判断图片大小不是52字节,因为大小为52字节,说明图片有错
            print('(≧^.^≦)喵~~~正在下载:' + picurl)
            with open('图片\\%s.jpg'%i, 'wb') as f:# 图片没错就下载
                f.write(pic)
        else: # 图片有错就pass掉
            pass
if __name__ == '__main__' : # 设置主函数
    try:
        os.mkdir('图片') # 创建一个目录,知道有人习惯在桌面打开,建个目录安全点
    except:
        pass
    while i < 15000:
        i += 1 # 让i在1-15000中遍历,猜测图片的ID,,本套图的ID最多是12000+
        # 重头戏。设置多线程,我也是初学,还不太懂原理,见着比我用for循环,单个下载是要快得多
        # 还在继续学习中,学海无涯,学无止境!!
        # target用于调用先前创建的下载图片的函数,kwargs用于设置函数中的变量值
        t1 = threading.Thread(target=get_pic, kwargs={'i' : i})
        t1.start() # 启动多线程


EXE打包文件https://wwe.lanzouj.com/i1iN3fqki2b
反复运行程序,尽量下载完!!

免费评分

参与人数 5吾爱币 +8 热心值 +4 收起 理由
从零学习的歪经小 + 1 不错
回家笔记~ + 1 + 1 加油!!!
Zeaf + 1 + 1 加油!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
q453565899 + 2 + 1 好东西~玩喜欢~哈哈哈~

查看全部评分

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

Ldfd 发表于 2020-8-18 09:23
[Asm] 纯文本查看 复制代码
picurl = f'https://gitee.com/kevin2046/picture/raw/master/img/{i}.jpg'

这么写就行,格式化
chen4321 发表于 2020-8-18 06:31
你这个多线程是要15000个线程?内存可能会炸,还好每个线程耗时并不多,另外requests是不能异步的,是阻塞的,多线程不能提升特别多效率,基本跟写个for i in range(15000)差不多吧,
udada 发表于 2020-8-18 01:05
雍卓郎 发表于 2020-8-18 01:20
爬虫好学吗?有没有特殊要求?
 楼主| 学海AoA无涯 发表于 2020-8-18 01:32
雍卓郎 发表于 2020-8-18 01:20
爬虫好学吗?有没有特殊要求?

我就只看了小甲鱼的python教学前四章,就跳了10章先来学爬虫,感觉简单的东西到是挺简单的,,,深层次的还没接触到,,应该会有点难,,,我现在要跳回去,按照章程来学习了
 楼主| 学海AoA无涯 发表于 2020-8-18 01:38

好像我这个星期都在熬夜耶
每次都是凌晨1-2点钟发帖
借你吉言,长寿长寿!!
ps.正在留长头发,已经2-3个月没剪了
非提学破解 发表于 2020-8-18 03:58
真的厉害,7行爬出原图妹子。好活!
wangwanghz 发表于 2020-8-18 05:45
跟着学习一下,一直想学,一直沉不下心去学,唉
无名氏wyw 发表于 2020-8-18 06:59
python玩多线程?多进程还差不多
fls 发表于 2020-8-18 07:22
这个码云仓库什么鬼
另外,同一楼,用multiprocessing异步池比较好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 03:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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