Python保持连接并下载图片
我想用Python从一个网站下载图片,但这个图片每秒都会变一次。请问这样做是否可行:
- 设置Python的连接为“保持活动”状态
- 下载图片;等待1.5秒;再下载图片;再等1.5秒;再下载图片;再等1.5秒;
- 最后关闭连接
我的意思是,不想每1.5秒就重新连接一次网站,而是用一个保持活动的连接。然后在脚本结束时(比如15秒后)再关闭这个连接。确保连接已经关闭。
如果你有好的方法来实现这个,请给我个例子。谢谢!
1 个回答
1
通过使用 requests库,并加上一些可选的标志:
import requests
r = requests.get(url='http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg',stream=True)
print r.headers['last-modified']
输出的内容包括文件的创建时间:
Thu, 03 Oct 2013 23:15:52 GMT
我们使用了 'stream=True' 这个标志,具体可以参考 这个说明,原因是:
在这个时候,只有响应的头信息被下载下来,连接仍然保持打开状态,这样我们就可以根据需要来获取内容。
接下来,你可以检查新文件的时间戳是否比旧的更新,如果更新了再进行下载。要下载文件,可以使用 r.content:
image = r.content
下面是一个可以运行的代码:
import requests
import time
oldtime = ''
for i in xrange(100):
r = requests.get(url='http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg',stream=True)
newtime = r.headers['last-modified']
if newtime != oldtime:
image = r.content
oldtime = newtime
# you can put your time.sleep() statement here, but it is not necessary