吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2763|回复: 4
上一主题 下一主题
收起左侧

[求助] python多线程下载/上传的问题

[复制链接]
跳转到指定楼层
楼主
as614001 发表于 2020-11-19 18:06 回帖奖励
本帖最后由 as614001 于 2020-11-19 18:14 编辑

楼主最近是在爬图片中。

多线程的情况下,如何判断每个线程成功下载/上传图片。因为是远程主机,多线程下有一定几率是被反爬403的。10个图片一般会出现2次反爬。
是在线程里面做循环判断?
[Python] 纯文本查看 复制代码
class DownLoadThread(threading.Thread):                        //继承threading.Thread类
    def __init__(self, url):                        //重写__init__方法,并对__init__方法传递参数url
        super(DownLoadThread, self).__init__()                        //继承父类的__init__的方法
        self.url = url                        //将url与传进来的参数绑定
    def run(self):                        //重写run方法
        try:                        //异常捕获
            urlobj = urlopen(self.url, timeout=3)                        打开url链接,若3秒后未响应,则关闭函数
        except Exception as e:
            print("下载%s失败" % url)
            imgContent = None
        else:
            fileName = url.split("/")[-1]                        //获取文件名

            with open("%s/%s" % (DOWNLOAD_DIR, fileName), "ab") as f:                        //以追加二进制数据的方式打开文件,若文件不存在则新建文件
                while True:
                    imgContentChunk = urlobj.read(1024*3)                        //每次只读取3k文件,避免文件过大,电脑死机
                    if not imgContentChunk:                        //如果文件全部读取则退出函数
                        break
                    f.write(imgContentChunk)                        //将数据写入本机文件中
                print("%s下载成功"%(fileName))

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

沙发
kof21411 发表于 2020-11-19 19:06
用getcode()方法来来判断一下http状态返回码
3#
netspirit 发表于 2020-11-19 19:42
判断前1024字节是不是html文档
而且就算是没有反爬有时也会返回错误 不能直接保存文件 要判断下载的是图片还是文档 图片才保存
4#
justice_hum 发表于 2020-11-19 20:28
5#
ufo0033 发表于 2020-11-20 15:35
[Python] 纯文本查看 复制代码
urlobj = urlopen(self.url, timeout=3)
if urlobj.getcode() != 200:
    raise Exception('请求出错')

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
as614001 + 1 + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-16 10:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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