python3 写文件时,程序卡住不动了?

thanks for your time.

我写了一个爬虫,执行到某一步时,获取一个地址的set,传入到这个文件中,开始下载图片

from urllib import request
import ssl

ssl._create_default_https_context = ssl._create_unverified_context;


class Downloader(object):
    def download(self, urlSet):
        print("----- start download -----")
        if(isinstance(urlSet, set)):
            count = 0
            for imgUrl in urlSet:
                headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'};
                coat = request.Request(url=imgUrl, headers=headers);
                res = request.urlopen(coat);
                content = res.read();
                f = open("%d.jpg" % count, 'wb')
                f.write(content)
                f.close()

                count += 1;

        else:
            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'};
            coat = request.Request(url=urlSet, headers=headers);
            res = request.urlopen(coat);
            content = res.read();
            f = open("001.jpg", 'wb')
            f.write(content)
            f.close()
        print("----- download over -----")

下载了大概几千个图片后,程序不再写入图片,也没有继续爬取页面,也没有抛出异常

clipboard.png

点暂停也没有效果。

我感觉可能是写文件的时候出问题了。

或者请给我推荐一个靠谱的写文件的方法或者三方包,谢谢。

阅读 4.6k
1 个回答

可能是 HTTP 请求超时, 通过设置超时时间可发现问题.

推荐 requests 库, 边下载边保存, 如

with open(filename, 'wb') as fd:
    for chunk in r.iter_content(chunk_size=128):
        fd.write(chunk)

参考
http://docs.python-requests.o...