2016-10-04 49 views
-2

刚学完网络抓取自动化无聊的东西书,但我仍然很困惑iter_content函数?它实际上做了什么?iter_content()函数到底做了什么?

尝试使用正常的下载网页:

note = open('download.txt', 'w') 
note.write(request) 
note.close() 

但结果是不同的使用:

note = open('download.txt', 'wb') 
for chunk in request.iter_content(100000): 
    note.write(chunk) 
note.close() 

???

回答

2

iter_contentCHUNK_SIZE = 1,decode_unicode =假

迭代在响应数据。在请求中设置stream = True时,可以避免将内容一次性读入内存以获得较大的响应。块大小是它应该读入内存的字节数。这不一定是解码可能发生时返回的每个项目的长度。

chunk_size必须是int或None类型。根据流的值,None的值将有不同的功能。 stream = True将在数据以任何大小接收到的数据到达时读取数据。如果stream = False,则数据作为单个块返回。

如果decode_unicode为True,则内容将使用基于响应的最佳可用编码进行解码。

链路 - http://docs.python-requests.org/en/master/api/

在这种情况下,将遍历每次用100000个字节的响应。