Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 当我使用pycurl执行curl命令时,我得到错误3“;在URL“中发现非法字符”;但当把这个URL粘贴到Chome中时,它就可以被解析了_Python 3.x_Facebook_Curl_Pycurl - Fatal编程技术网

Python 3.x 当我使用pycurl执行curl命令时,我得到错误3“;在URL“中发现非法字符”;但当把这个URL粘贴到Chome中时,它就可以被解析了

Python 3.x 当我使用pycurl执行curl命令时,我得到错误3“;在URL“中发现非法字符”;但当把这个URL粘贴到Chome中时,它就可以被解析了,python-3.x,facebook,curl,pycurl,Python 3.x,Facebook,Curl,Pycurl,你好。我正在编写一个python程序,从我的Facebook页面请求一些帖子。为此,Facebook提供了一个他们称之为“GraphAPI浏览器”的工具。使用类似于GET请求的东西,我可以得到我想要的任何东西(只要我有访问权和有效的令牌)。我为GraphAPI浏览器提出了自己的解决方案,这就是生成URL。生成URL后,我使用pycurl从Facebook获取包含我所有数据的JSON对象 使用pycurl时,会出现以下错误: pycurl.error:(3,“URL中发现非法字符”) 但是,当打印

你好。我正在编写一个python程序,从我的Facebook页面请求一些帖子。为此,Facebook提供了一个他们称之为“GraphAPI浏览器”的工具。使用类似于GET请求的东西,我可以得到我想要的任何东西(只要我有访问权和有效的令牌)。我为GraphAPI浏览器提出了自己的解决方案,这就是生成URL。生成URL后,我使用pycurl从Facebook获取包含我所有数据的JSON对象

使用pycurl时,会出现以下错误:
pycurl.error:(3,“URL中发现非法字符”)

但是,当打印所述URL并将其粘贴到浏览器时,我得到了有效的响应

URL:
https://graph.facebook.com/v7.0/me?fields=posts%7Bmessage%2Cfrom%7D&access_token=

我的代码如下所示:

def get_posts_curl(nodes=['posts'], fields=[['message', 'from']], token_file='Facebook/token.txt'):
    curl = pycurl.Curl()
    response = BytesIO()
    token = get_token_from_file(token_file)

    # constructing request.
    url = parse_facebook_url_request(nodes, fields, token)
    url = convert_to_curl(url)

    print("---URL---: " + url)

    # curl session and settings.
    curl.setopt(curl.CAINFO, certifi.where())
    curl.setopt(curl.URL, url)
    curl.setopt(curl.WRITEDATA, response)
    curl.perform()
    curl.close()
    return response.getvalue().decode('utf-8')
错误会在
curl.perform()

一些可能相关的信息:
刚才一切都很顺利。在将我的程序从我的工作站(运行Windows10)转移到我的服务器(Ubuntu18.04服务器)之后,一切都很正常,我把这个项目放到了一边。只是现在错误弹出,我已经有一段时间没有接触项目了。

似乎是令牌导致了问题。我已经尝试了大约100个代币,有些造成了问题,有些没有。另外,解决这一切的修复程序是使用urllib3.unquote

from urllib.parse import unquote

...
url = unquote(url)

你应该逃离代币。