import requests
res = requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt')
res.raise_for_status()
playFile = open('xx_RomeoAndJuliet.txt', 'wb')
for chunk in res.iter_content(100000):
playFile.write(chunk)
playFile.close()
iter_content()
方法在循环的每次迭代中,返回一段内容。
每一段都是 bytes
数据类型,需要指定一段包含多少字节。
10万字节通常是不错的选择,所以将100000作为参数传递给 iter_content()
。
文件 RomeoAndJuliet.txt
将存在于当前工作目录。
请注意,虽然在网站上文件名是 pglll2.txt
,
但在硬盘上,该文件的名字不同。 requests
模块只处理下载网页内容。
一旦网页下载后,它就只是程序中的数据。
即使在下载该网页后断开了因特网连接,该页面的所有数据仍然会在计算机中。
write()
方法返回一个数字,表示写入文件的字节数。
在前面的例子中,第一段包含100000个字节,文件剩下的部分只需要78981个字节。
回顾一下,下载并保存到文件的完整过程如下:
- 调用
requests.get()
下载该文件。 - 用
'W'
调用open()
,以写二进制的方式打开一个新文件。 - 利用
Respose
对象的iter_content()
方法做循环。 - 在每次迭代中调用
write()
,将内容写入该文件。 - 调用
close()
关闭该文件。
这就是关于 requests
模块的全部内容!相对于写入文本文件的 open()
/ write()
/ close()
工作步骤,
for
循环和 iter_content()
的部分可能看起来比较复杂,
但这是为了确保 requests
模块即使在下载巨大的文件时也不会消耗太多内存。
可以访问 http://requests.readthedocs.org/ 了解 requests
模块的其他功能。