<p>你可以试试这样的。由于代理的原因,我无法测试它,但是这个示例应该可以帮助您朝着正确的方向发展。直接使用套接字会使这变得不必要的困难。你知道吗</p>
<pre><code>#! /usr/bin/env python3
import http.client
def main():
connection = http.client.HTTPConnection('justlearn.16mb.com')
connection.request('GET', '/a.jpg')
response = connection.getresponse()
if response.status != 200:
raise RuntimeError(response.reason)
with open('a.jpg', 'wb') as file:
while not response.closed:
buffer = response.read(1 << 12)
if not buffer:
break
file.write(buffer)
connection.close()
if __name__ == '__main__':
main()
</code></pre>
<p>下面是另一个较短的示例,它使用<code>urlopen</code>包中的<code>urllib.request</code>函数。代码更简单,因为HTTP代码是在后台处理的。你知道吗</p>
<pre><code>#! /usr/bin/env python3
from urllib.request import urlopen
def main():
with urlopen('http://justlearn.16mb.com/a.jpg') as source, \
open('a.jpg', 'wb') as destination:
while True:
buffer = source.read(1 << 12)
if not buffer:
break
destination.write(buffer)
if __name__ == '__main__':
main()
</code></pre>