Python Requests taking a long time
基本上我正在开发一个python项目,我从sec edgar数据库下载和索引文件。 但问题是,在使用请求模块时,将文本保存在变量中需要很长时间(对于一个文件,在大约130到170秒之间)。
该文件大约有大约1600万个字符,我想看看是否有任何方法可以轻松地减少检索文本所需的时间。 - 示例:
1 2 3 4 5 6 7 | import requests url ="https://www.sec.gov/Archives/edgar/data/0001652044/000165204417000008/goog10-kq42016.htm" r = requests.get(url, stream=True) print(r.text) |
谢谢!
我发现的是
1 2 3 | ... r.encoding = 'utf-8' ... |
额外细节
就我而言,我的请求没有返回编码类型。响应大小为256k,
调查文本属性函数。它测试是否有编码。如果有
在长串上这需要时间。通过定义响应的编码(如上所述),您将跳过检测。
验证这是您的问题
在上面的例子中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | from datetime import datetime import requests url ="https://www.sec.gov/Archives/edgar/data/0001652044/000165204417000008/goog10-kq42016.htm" r = requests.get(url, stream=True) print(r.encoding) print(datetime.now()) enc = r.apparent_encoding print(enc) print(datetime.now()) print(r.text) print(datetime.now()) r.encoding = enc print(r.text) print(datetime.now()) |
当然输出可能会在打印中丢失,所以我建议你在交互式shell中运行上面的内容,即使没有打印也会失去时间,这可能会变得更加明显
来自@ martijn-pieters
Decoding and printing 15MB of data to your console is often slower than loading data from a network connection. Don't print all that data. Just write it straight to a file.