首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python异步httprequest

python异步httprequest
EN

Stack Overflow用户
提问于 2012-03-17 23:02:13
回答 2查看 12.4K关注 0票数 7

我试图在python中使用twitter搜索web服务。我想打电话给一个web服务,比如:

代码语言:javascript
复制
http://search.twitter.com/search.json?q=blue%20angels&rpp=5&include_entities=true&result_type=mixed

从我的python程序。

有人能告诉我吗

  1. 如何在python中使用xmlhttprequst对象
  2. 如何向其传递参数,以及
  3. 如何在字典中获取数据。

以下是我的尝试:

代码语言:javascript
复制
import urllib
import sys
url = "http://search.twitter.com/search.json?q=blue%20angels&rpp=5&include_entities=true&result_type=mixed"
urlobj = urllib.urlopen(url)
data = urlobj.read()
print data

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-17 23:49:32

您不需要使用“异步httprequest”来使用twitter搜索api:

代码语言:javascript
复制
import json
import urllib
import urllib2

# make query
query = urllib.urlencode(dict(q="blue angel", rpp=5, include_entities=1,
                              result_type="mixed"))  
# make request
resp = urllib2.urlopen("http://search.twitter.com/search.json?" + query)

# make dictionary (parse json response)
d = json.load(resp)

可能有几个库围绕这些http请求提供了一个很好的OO接口。

要同时发出多个请求,可以使用gevent

代码语言:javascript
复制
import gevent
import gevent.monkey; gevent.monkey.patch_all() # patch stdlib

import json
import urllib
import urllib2

def f(querystr):
    query = urllib.urlencode(dict(q=querystr, rpp=5, include_entities=1,
                                  result_type="mixed"))
    resp = urllib2.urlopen("http://search.twitter.com/search.json?" + query)
    d = json.load(resp)
    print('number of results %d' % (len(d['results']),))

jobs = [gevent.spawn(f, q) for q in ['blue angel', 'another query']]
gevent.joinall(jobs) # wait for completion
票数 8
EN

Stack Overflow用户

发布于 2012-03-17 23:43:28

我建议您查看请求及其模块

简单请求:

代码语言:javascript
复制
import json
import requests

params = {'rpp': 5, 'include_entities': 1, 'result_type': 'mixed',
          'q': 'blue angel'}

r = requests.get('http://search.twitter.com/search.json', params=params)

print json.loads(r.text)

异步:

代码语言:javascript
复制
import json
from requests import async

def add_option_params(args):
    options = {'rpp': 5, 'include_entities': 1, 'result_type': 'mixed'}
    args['params'].update(options)
    return args

requests = []

for search_term in ['test1', 'test2', 'test3']:
    request = async.get('http://search.twitter.com/search.json',
                        params={'q': search_term},
                        hooks={'args': add_option_params})
    requests.append(request)

for result in async.map(requests):
    print result.url, json.loads(result.text)['completed_in']
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9754562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档