如何在facebook批处理api中模拟python-curl请求

2024-05-15 21:29:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试按照中的批处理示例进行操作: http://developers.facebook.com/docs/reference/ads-api/batch-requests/

具体来说,curl命令:

  curl -F 'access_token=____' 
    -F 'batch=[
               {
                "method": "POST",
                "relative_url": "6004251715639",
                "body": "redownload=1&max_bid=35"
               },
               {
                "method": "POST",
                "relative_url": "6004251716039",
                "body": "redownload=1&max_bid=35"
               },
               {
                "method": "POST",
                "relative_url": "6004251715839",
                "body": "redownload=1&max_bid=35"
               }
              ]' https://graph.facebook.com

工作正常。在

当我尝试在python中使用urllib2时,我不知道如何模拟“-F”标志。在

当一个请求是“-d”时,我知道该怎么做:

^{pr2}$

我用python代码模拟了它:

def sendCommand(self, url, dataForPost=None):        
    if dataForPost == None:
        req = urllib2.Request(url)
    else:
        req = urllib2.Request(url, dataForPost)        
    jar = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
    content = opener.open(req)
    response = content.read()
    return response

如何模拟上面的-F命令?在


Tags: comurlfacebookbatchbodyopenerurllib2post
2条回答

对于Python,我们可以使用Facepy来获取批处理请求的功能和处理Facebook图形API的分页。在

根据facebook的说法,graph api一次接受50个请求,但facepy为我们处理这个问题,也就是说,我们可以将尽可能多的请求附加到列表中并对其进行批处理。在

from facepy import GraphAPI
access = <access_token>
batch1=[
    {'method': 'GET', 'relative_url': 'me/accounts'}
]
graph = GraphAPI(access)
data= graph.batch(batch1)

for i in data:
    print i

您的sendCommand函数应该可以工作。dataForPost需要字典。如果您传递它,下面的一个将复制-F函数用于access_token和batch。我使用"""字符串文本并去除空白。您可以保留它,但是urllib2会尝试对其进行url编码,这可能会使调试更加困难。您可以尝试使用json库来生成批处理值。在

dataForPost = {'access_token' : '____',  
               'batch' : """[
               {
                "method": "POST",
                "relative_url": "6004251715639",
                "body": "redownload=1&max_bid=35"
               },
               {
                "method": "POST",
                "relative_url": "6004251716039",
                "body": "redownload=1&max_bid=35"
               },
               {
                "method": "POST",
                "relative_url": "6004251715839",
                "body": "redownload=1&max_bid=35"
               }
              ]""".replace('\n', '').replace('\t', '').replace(' ', '')}

相关问题 更多 >