Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 python请求和会话的授权_Python 3.x_Parsing - Fatal编程技术网

Python 3.x python请求和会话的授权

Python 3.x python请求和会话的授权,python-3.x,parsing,Python 3.x,Parsing,我是Python新手。我正试图登录到该网站,但没有成功(未经授权)。我做错了什么 import requests with requests.Session() as c: url = 'https://kartoteka.ru' LOGIN = 'somelogin' PWD = 'secretpassword' PROMO = "" c.get(url) loginData = dict(login=LOGIN, pwd=PWD, promo

我是Python新手。我正试图登录到该网站,但没有成功(未经授权)。我做错了什么

import requests

with requests.Session() as c:
    url = 'https://kartoteka.ru'
    LOGIN = 'somelogin'
    PWD = 'secretpassword'
    PROMO = ""
    c.get(url)
    loginData = dict(login=LOGIN, pwd=PWD, promo=PROMO)
    c.post(url, data=loginData, headers = {"Referer": "https://kartoteka.ru"})
    page=c.get(url)
    print(page.content)

第一个问题是,您似乎在登录表单中遗漏了以下输入:

<input type="checkbox" id="scratchcard_checkbox" name="scratchcard" value="scratchcard" style="top: 2px; position: relative;margin-right: 4px;">

为什么你一开始就要麻烦
获取
url?我认为没有必要

你如何知道自己未经授权?当您使用登录数据发布时,您没有保存请求对象,因此您如何知道它返回了错误代码

顺便说一句,声明一个文字字典来创建这样的字典要快得多,而且在会话中不需要它

import requests

ROOT_URL = 'https://kartoteka.ru'
USERNAME, PASSWORD = 'login', 'pass'
PROMO = ''=

with requests.Session() as c:
    login_data = {'login': USERNAME, 'pwd': PASSWORD, 
                  'promo': PROMO, 'scratchcard': false}
    login_request = c.post(ROOT_URL, 
                           data=login_data, 
                           headers={"Referer": "https://kartoteka.ru"})
    login_request.raise_for_status()
    print(c.get(ROOT_URL).content)

我不知道这是否能解决任何问题,但这可能只是一个开始。

谢谢你的帮助!但是你的代码也不起作用。我通过分析html来检查结果。我想问题是第一步是点击“登录”按钮。登录,但我不知道如何点击它这不是问题所在,因为按钮周围没有表单来切换该模式,所以都在JS中。也许
scratchcard
应该设置为
scratchcard
。也许可以先尝试使用其他工具(如Postman或curl)登录,让一切正常工作,看看登录时会发生什么,然后尝试使用Python。如果打开控制台,然后手动登录,您应该能够跟踪浏览器发送的请求,然后准确地看到发生了什么。我希望站点能够设置会话cookie。对不起,我帮不上忙了。
import requests

ROOT_URL = 'https://kartoteka.ru'
USERNAME, PASSWORD = 'login', 'pass'
PROMO = ''=

with requests.Session() as c:
    login_data = {'login': USERNAME, 'pwd': PASSWORD, 
                  'promo': PROMO, 'scratchcard': false}
    login_request = c.post(ROOT_URL, 
                           data=login_data, 
                           headers={"Referer": "https://kartoteka.ru"})
    login_request.raise_for_status()
    print(c.get(ROOT_URL).content)