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