Python保持连接并下载图片

1 投票
1 回答
514 浏览
提问于 2025-04-17 21:36

我想用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

撰写回答