<p>JPEG文件不是文本,而是二进制数据。所以您需要使用<code>request.content</code>属性来访问它。</p>
<p>下面的代码还包含一个<code>get_headers()</code>函数,当您浏览一个网站时,这个函数非常方便。</p>
<pre><code>import requests
def get_headers(url):
resp = requests.head(url)
print("Status: %d" % resp.status_code)
resp.raise_for_status()
for t in resp.headers.items():
print('%-16s : %s' % t)
def download(url, fname):
''' Download url to fname '''
print("Downloading '%s' to '%s'" % (url, fname))
resp = requests.get(url)
resp.raise_for_status()
with open(fname, 'wb') as f:
f.write(resp.content)
def main():
site = 'http://www.gucci.com/images/ecommerce/styles_new/201501/web_full/'
basename = '277520_F4CYG_4080_001_web_full_new_theme.jpg'
url = site + basename
fname = 'qtest.jpg'
try:
#get_headers(url)
download(url, fname)
except requests.exceptions.HTTPError as e:
print("%s '%s'" % (e, url))
if __name__ == '__main__':
main()
</code></pre>
<p>我们调用<code>.raise_for_status()</code>方法,以便<code>get_headers()</code>和{<cd5>}在出错时引发异常;我们在<code>main()</code>中捕获异常并打印相关信息。</p>