我正在编写一个小型网络抓取工具,可以从特定网站获取大量图片。但是,IO速度很慢所以我用Google搜索并发现asyncio和aiohttp来处理IO绑定操作开销。我梳理了aiohttp文档,但无法在请求模块中找到任何看起来像iter_content()的替代函数。我需要它将图像数据写入磁盘。有人可以帮忙吗?
答案 0 :(得分:2)
您应该使用ClientResponse.content
属性。它是StreamReader
实例,可用于逐步读取响应。来自docs:
with open(filename, 'wb') as fd:
while True:
chunk = await r.content.read(chunk_size)
if not chunk:
break
fd.write(chunk)
StreamReader
还支持 async 迭代:
async for line in r.content:
...
async for chunk in r.content.iter_chunked(1024):
...
async for slice in r.content.iter_any(): # as much as possible before blocking
...