在python中读取HTTP流

时间:2012-08-09 20:35:39

标签: python twitter

我试图阅读Twitter流媒体API的输出,但我遇到了一些麻烦。到目前为止,这是我的代码:

from urllib2 import *
import StringIO

password_mgr = HTTPPasswordMgrWithDefaultRealm()
url = "https://stream.twitter.com/1/statuses/sample.json"
password_mgr.add_password(None, url, 'myusername', 'mypassword')
h = HTTPBasicAuthHandler(password_mgr)
opener = build_opener(h)
page = opener.open(url)
io = StringIO(page.read())
print io.getvalue()
io.close()

我最初只使用page.read(),但导致我的控制台只是继续打印流并且不会返回代码。我现在正在尝试使用StringIO像流一样处理它并逐步打印出来,但是当我这样做时,我什么也得不到,这个过程就成立了。有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

请阅读流请求¶

https://requests.kennethreitz.org/en/master/user/advanced/#streaming-requests

import json
import requests

r = requests.get('https://httpbin.org/stream/20', stream=True)

if r.encoding is None:
    r.encoding = 'utf-8'

for line in r.iter_lines(decode_unicode=True):
    if line:
        print(json.loads(line))