Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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';什么要求?_Python_Login - Fatal编程技术网

如何使用Python';什么要求?

如何使用Python';什么要求?,python,login,Python,Login,我已经通过无数的谷歌结果和堆栈溢出问题,试图找出如何做到以下几点。大多数人建议使用请求的会话类来存储会话信息 不幸的是,我尝试过的任何网站都没有提供任何解决方案。显然我做错了什么,我想在我发疯之前弄清楚这是什么 我当前的代码: from requests import session from bs4 import BeautifulSoup as bs USER = 'leinad177' PASSWORD = '' # removed for obvious reasons URL =

我已经通过无数的谷歌结果和堆栈溢出问题,试图找出如何做到以下几点。大多数人建议使用请求的会话类来存储会话信息

不幸的是,我尝试过的任何网站都没有提供任何解决方案。显然我做错了什么,我想在我发疯之前弄清楚这是什么

我当前的代码:

from requests import session
from bs4 import BeautifulSoup as bs

USER = 'leinad177'
PASSWORD = '' # removed for obvious reasons

URL = 'https://en.wikipedia.org/w/index.php?title=Special:UserLogin'

with session() as s:
    login_data = {'wpName': USER,
                  'wpPassword': PASSWORD}

    r = s.post(URL, data=login_data)
    r = s.get('https://en.wikipedia.org/wiki/Special:Preferences')

    print bs(r.text).find('div', {'id':'mw-content-text'}).p.text.strip()
    # "Please log in to change your preferences."

您缺少一些POST参数。wpLoginToken可能是唯一一个强制性的

wpLoginAttempt:Log in
wpLoginToken:...
wpForceHttps:1
此外,正确的URL是:

https://en.wikipedia.org/w/index.php?title=Special:UserLogin&action=submitlogin&type=login
wpLoginToken不是静态的,您必须在登录之前使用beautifulsoup对其进行解析

如何获取令牌:

from bs4 import BeautifulSoup as bs
import requests

s = requests.session()
URL = 'https://en.wikipedia.org/w/index.php?title=Special:UserLogin'

req = s.get(URL).text
html = bs(req)

wp_login_token = html.find("input", {"name": "wpLoginToken"}).attrs['value']

你能更详细地了解检索wpLoginToken的信息吗?我已经编辑了我的帖子,并添加了如何获取令牌。