Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 使用请求登录Twitter_Python_Twitter_Python Requests - Fatal编程技术网

Python 使用请求登录Twitter

Python 使用请求登录Twitter,python,twitter,python-requests,Python,Twitter,Python Requests,我试图用Python(2.7)中的请求模块登录Twitter,登录后,我想访问Twitter上的另一个目录 因此: 访问: 定位用户名/密码元素 输入Twitter凭据 访问: 输入Twitter密码 到目前为止,我的代码是: import requests import sys import os #LOGIN data = {"session[username_or_email]":"MY_USERNAME", "session[password]":"MY_PASSWORD"}

我试图用Python(2.7)中的
请求
模块登录Twitter,登录后,我想访问Twitter上的另一个目录

因此:

  • 访问:
  • 定位用户名/密码元素
  • 输入Twitter凭据
  • 访问:
  • 输入Twitter密码
  • 到目前为止,我的代码是:

    import requests
    import sys
    import os
    
    #LOGIN
    data = {"session[username_or_email]":"MY_USERNAME",
        "session[password]":"MY_PASSWORD"}
    r = requests.post("https://twitter.com/login/", data=data)
    
    if ("success" in r.json()):
        print "Logged in successfully!"
    else:
        print "Failed to login!"
        sys.exit(0)
    
    #CHANGE URL AND INPUT PASSWORD
    data = {"auth_password":"MY_PASSWORD"}
    r = requests.post("https://twitter.com/settings/your_twitter_data", data=data)
    
    if ("success" in r.json()):
        print "Success!"
        sys.exit(0)
    
    运行时,这是我得到的错误:

    Traceback (most recent call last):
      File "twitter.py", line 10, in <module>
        if ("success" in r.json()):
      File "/usr/lib/python2.7/dist-packages/requests/models.py", line 808, in json
        return complexjson.loads(self.text, **kwargs)
      File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 516, in loads
        return _default_decoder.decode(s)
      File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 373, in decode
        raise JSONDecodeError("Extra data", s, end, len(s))
    simplejson.scanner.JSONDecodeError: Extra data: line 1 column 5 - line 1 column 81 (char 4 - 80)
    
    回溯(最近一次呼叫最后一次):
    文件“twitter.py”,第10行,在
    if(r.json()中的“success”):
    json格式的文件“/usr/lib/python2.7/dist packages/requests/models.py”,第808行
    返回complexjson.load(self.text,**kwargs)
    文件“/usr/lib/python2.7/dist-packages/simplejson/_-init__.py”,第516行,装入
    返回\u默认\u解码器。解码
    文件“/usr/lib/python2.7/dist packages/simplejson/decoder.py”,第373行,在decode中
    raise JSONDecodeError(“额外数据”,s,end,len)
    simplejson.scanner.JSONDecodeError:额外数据:第1行第5列-第1行第81列(字符4-80)
    
    您正在使用
    r.json()
    虽然响应是HTML,但请尝试使用
    r.text

    另外,如果你想知道你已经成功登录,你最好检查你的个人资料图片或类似的东西


    然后,您应该使用
    requests.Session()
    ,更多信息:

    看起来您正在尝试将输出转换为json(不是字符串),格式不是json。也许您想尝试python twitter API包装,而不是使用请求。登录twitter时会涉及更多内容。如何登录?我们应该添加哪些参数?如果您查看,您将找到答案。祝你好运我用r.text替换了r.json(),但我得到了:回溯(上次调用):文件“twitter.py”,第10行,if(“r.text()中的“success”):TypeError:“unicode”对象不能调用
    r.text
    ,不能
    r.text()
    好的,但我一直得到“登录失败”。。。如何检查我是否已登录?例如,如果title==“Twitter”?在请求中我该如何做呢?使用浏览器登录twitter,右键单击图片,单击“检查”并获取完整的url。现在,在您的代码中,在请求之后,尝试如下操作:
    if r.text.find('yourPictureUrl')!=-1:#登录。
    为什么不使用twitter API?那就容易多了。