gpt4 book ai didi

python - 无法从服务器端检索搜索结果 : Facebook Graph API using Python

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:32 24 4
gpt4 key购买 nike

我正在自己做一些简单的 Python + FB Graph 训练,我遇到了一个奇怪的问题:

import time
import sys
import urllib2
import urllib
from json import loads

base_url = "https://graph.facebook.com/search?q="
post_id = None
post_type = None
user_id = None
message = None
created_time = None

def doit(hour):
page = 1
search_term = "\"Plastic Planet\""
encoded_search_term = urllib.quote(search_term)
print encoded_search_term
type="&type=post"
url = "%s%s%s" % (base_url,encoded_search_term,type)
print url
while(1):

try:
response = urllib2.urlopen(url)
except urllib2.HTTPError, e:
print e
finally:
pass

content = response.read()
content = loads(content)

print "=================================="
for c in content["data"]:
print c
print "****************************************"

try:
content["paging"]
print "current URL"
print url
print "next page!------------"
url = content["paging"]["next"]
print url
except:
pass
finally:
pass

"""
print "new URL is ======================="
print url
print "=================================="
"""
print url

我在这里要做的是自动翻阅搜索结果,但尝试 content["paging"]["next"]

但是奇怪的是没有返回任何数据;我收到了以下内容:

{"data":[]}

即使在第一个循环中也是如此。

但是当我将网址复制到浏览器中时,返回了很多结果。

我也尝试过使用我的访问 token 的版本,同样的事情发生了。

++++++++++++++++++++编辑和简化++++++++++++++++++

好的,感谢 TryPyPy,这是我之前问题的简化和编辑版本:

为什么会这样:

   import urllib2
url = "https://graph.facebook.com/searchq=%22Plastic+Planet%22&type=post&limit=25&until=2010-12-29T19%3A54%3A56%2B0000"
response = urllib2.urlopen(url)
print response.read()

{"data":[]} 的结果?

但是相同的 url 在浏览器中会产生大量数据?

最佳答案

使用 Chrome(我得到大量数据)和 Firefox(我得到空响应)的试验和错误使我在“接受语言” header 上为零。其他修改据说只是装饰性的,但我不确定 CookieJar。

import time
import sys
import urllib2
import urllib
from json import loads
import cookielib

base_url = "https://graph.facebook.com/search?q="
post_id = None
post_type = None
user_id = None
message = None
created_time = None

jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders = [
('Accept-Language', 'en-US,en;q=0.8'),]

def doit(hour):
page = 1
search_term = "\"Plastic Planet\""
encoded_search_term = urllib.quote(search_term)
print encoded_search_term
type="&type=post"
url = "%s%s%s" % (base_url,encoded_search_term,type)

print url

data = True
while data:
response = opener.open(url)
opener.addheaders += [
('Referer', url) ]

content = response.read()
content = loads(content)

print "=================================="
for c in content["data"]:
print c.keys()
print "****************************************"

if "paging" in content:
print "current URL"
print url
print "next page!------------"
url = content["paging"]["next"]
print url
else:
print content
print url
data = False

doit(1)

这是一个经过清理的最小工作版本:

import urllib2
import urllib
from json import loads
import cookielib

def doit(search_term, base_url = "https://graph.facebook.com/search?q="):
opener = urllib2.build_opener()
opener.addheaders = [('Accept-Language', 'en-US,en;q=0.8')]

encoded_search_term = urllib.quote(search_term)
type="&type=post"
url = "%s%s%s" % (base_url,encoded_search_term,type)

print encoded_search_term
print url

data = True
while data:
response = opener.open(url)

content = loads(response.read())

print "=================================="
for c in content["data"]:
print c.keys()
print "****************************************"

if "paging" in content:
url = content["paging"]["next"]
else:
print "Empty response"
print content
data = False

doit('"Plastic Planet"')

关于python - 无法从服务器端检索搜索结果 : Facebook Graph API using Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4644336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com