使用Python的图片下载问题

时间:2019-04-22 07:30:17

标签: python iteration imagedownload

我正在使用URLs函数通过python通过requests.get()下载图像。当我为该功能提供单个URL时,它将下载。但是,在for循环中使用某些1000 URL's时,某些结果图像将损坏。但是,如果我在浏览器中打开已损坏图像的URL,则可以看到该图像,因此URLs似乎没有问题。为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

这似乎是一些反蜘蛛的对策。您需要做的就是用Python装饰您的HTTP HEADER。默认情况下,HTTP标头中的“ agent”段告诉网站它们是“ python”:)

在python中,您可以尝试:

# _*_coding:utf-8 _*_
# @Time    : 2019/4/22 15:51
# @Author  : Shek 
# @FileName: m2.py
# @Software: PyCharm

import requests

# header modify function
def get_header(agent, referer, host):
# just for example, you can crawl it from your Google Chrome Browser with F12
    header = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Host': host,
        'Cache-Control': 'max-age=0',
        'Referer': referer,
        'Cookie':'bla bla bla',
        'User-Agent': agent
    }
    return header

# requests part
req_session = requests.Session()
req = req_session.get(url='your.url', headers=get_header(agent='your.agent',referer='your.referer',host='your.host'), timeout=10)

# save part
with open('filename.jpg', 'w') as file_wr:
    file_wr.write(req.content)

file_wr.close()