Dan*_*lch 1 python http python-requests
我一直在使用我正在开发的脚本的问题,因为我没有收到任何输出,并且脚本的内存使用量随着时间的推移而变得越来越大.我已经发现问题在于我正在使用Requests库检查的一些URL.我期待下载一个网页,但我下载了一个大文件.然后将所有这些数据存储在内存中导致我的问题.
我想知道的是; 有什么办法让请求库检查下载的是什么?用wget我可以看到:长度:710330974(677M)[application/zip].
这些信息是否在带有请求的标题中可用?如果是这样,有一种方法可以在确定它不是HTML网页时终止下载?
提前致谢.
是的,标题可以告诉你很多关于页面的信息,大多数页面都会包含Content-Length标题.
但是,默认情况下,请求会在.get()or .post()等调用返回之前完整下载.设置stream=True关键字以推迟加载响应:
response = requests.get(url, stream=True)
Run Code Online (Sandbox Code Playgroud)
现在您可以检查标题,如果您不喜欢所发现的内容,只需丢弃该请求:
length = int(response.headers.get('Content-Length', 0))
if length > 1048576:
print 'Response larger than 1MB, discarding
Run Code Online (Sandbox Code Playgroud)
随后访问.content或.text属性,或.json()方法将触发响应的完整下载.
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |