代码之家  ›  专栏  ›  技术社区  ›  diegueus9

Python代码类curl

  •  9
  • diegueus9  · 技术社区  · 15 年前

    卷曲时我这样做:

    curl -u email:password http://api.foursquare.com/v1/venue.json?vid=2393749
    

    我怎么能在python中做同样的事情呢?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Sam Dolan    15 年前

    这是相当于 pycurl :

    import pycurl
    from StringIO import StringIO
    
    response_buffer = StringIO()
    curl = pycurl.Curl()
    
    curl.setopt(curl.URL, "http://api.foursquare.com/v1/venue.json?vid=2393749")
    
    curl.setopt(curl.USERPWD, '%s:%s' % ('youruser', 'yourpassword'))
    
    curl.setopt(curl.WRITEFUNCTION, response_buffer.write)
    
    curl.perform()
    curl.close()
    
    response_value = response_buffer.getvalue()
    
        2
  •  4
  •   Community Mohan Dere    9 年前

    尝试使用邮件头进行身份验证:“

    Python urllib2 Basic Auth Problem

    import urllib2
    import base64
    
    req = urllib2.Request('http://api.foursquare.com/v1/venue.json?vid=%s' % self.venue_id)
    req.add_header('Authorization: Basic ',base64.b64encode('email:password'))
    res = urllib2.urlopen(req)
    
        3
  •  3
  •   mjhm    15 年前

    我更愿意在子流程中运行命令行curl。这避免了python、pycurl和libcurl所有可能的版本匹配问题。观察到pycurl已经两年没有被接触过了,而且只在Python 2.5中被列为支持,这让我很警惕。 --约翰

       import subprocess
    
       def curl(*args):
            curl_path = '/usr/bin/curl'
            curl_list = [curl_path]
            for arg in args:
                curl_list.append(arg)
            curl_result = subprocess.Popen(
                         curl_list,
                         stderr=subprocess.PIPE,
                         stdout=subprocess.PIPE).communicate()[0]
            return curl_result
    
        answer = curl('-u', 'email:password', 'http://api.foursquare.com/v1/venue.json?vid=2393749')
    
        4
  •  1
  •   Alexandr    14 年前

    将人肉卷导入为投掷

    r = hurl.get('http://api.foursquare.com/v1/venue.json?vid=2393749', auth=('email','password'))
    

    r.content中的Json数据

        5
  •  0
  •   Community Mohan Dere    9 年前

    使用pycurl

    教程中有一个关于SO的讨论

    import sys
    import pycurl
    
    class ContentCallback:
            def __init__(self):
                    self.contents = ''
    
            def content_callback(self, buf):
                    self.contents = self.contents + buf
    
    t = ContentCallback()
    curlObj = pycurl.Curl()
    curlObj.setopt(curlObj.URL, 'http://www.google.com')
    curlObj.setopt(curlObj.WRITEFUNCTION, t.content_callback)
    curlObj.perform()
    curlObj.close()
    print t.contents