2012-06-07 37 views
2

我试图按照发现批量处理的例子: http://developers.facebook.com/docs/reference/ads-api/batch-requests/如何效仿卷曲-F在蟒蛇的Facebook图形API批量要求

具体而言,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”单个请求我知道该怎么做:

curl -d "name=Chm&daily_budget=1000&lifetime_budget=10000 
&campaign_status=1" "https://graph.facebook.com/ 
act_368811234/adcampaigns?access_token=___" 

我模仿它使用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上面的命令?

回答

1

您的sendCommand函数应该工作。 dataForPost期待字典。如果你通过它下面的它将复制access_token和批处理的-F功能。我正在使用"""字符串文字并剥离空白。你可以把它留在里面,但urllib2会尝试对它进行网址编码,这可能会使调试更加困难。您可以尝试使用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(' ', '')} 
+0

谢谢!这工作! 只需添加dataForPost = urllib.urlencode(dataForPost)即可使其正常工作。 – eran

-1

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

按照facebook的规定,图形api一次只能处理50个请求,但面对处理对我们来说,即我们可以将多个请求附加到列表中并进行批处理。

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 
+1

它不回答这个问题。这是一个评论。 – Opal