Проблема загрузки изображения с использованием Python - PullRequest
0 голосов
/ 22 апреля 2019

Я загружаю изображения, используя URLs через python, используя функцию requests.get().Когда я дал один URL для этой функции, она загружается.Но когда дано 1000 URL's в цикле for, некоторые из результирующих изображений будут повреждены.Но если я открою URL поврежденного изображения в браузере, мы увидим это изображение, поэтому, похоже, с URLs проблем не возникнет.Почему это будет происходить?

1 Ответ

0 голосов
/ 22 апреля 2019

похоже, что это противодействие паукам.Все, что вам нужно сделать, это украсить ваш HTTP HEADER в Python.По умолчанию сегмент «агент» в заголовке HTTP сообщает веб-сайту, что они являются «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()

...