首页 > 解决方案 > 努力创建一个会话,以便我可以登录到一个站点并通过 Python 转到我需要的页面

问题描述

我正在尝试登录网站 (tesco.com) 并获取安全页面的 HTML。

我的计划是使用 requests 库并创建一个会话......然后使用该会话转到安全页面(订单)。

我认为我的问题是我没有点击“提交”,但它是一个按钮而不是正常的提交......希望得到一些帮助!

我是 Python 新手。

import requests
EMAIL = 'MYUSERNAME@EMAIL.com'
PASSWORD = 'MYPASSWORD123!'

URL = 'https://secure.tesco.com/account/en-GB/login'
session = requests.session()
login_data = {
    'email': EMAIL,
    'password': PASSWORD
}
r = session.post(URL, data=login_data) 
r = session.get('https://www.tesco.com/groceries/en-GB/orders/449555448_6781')
print(r).text

我希望进行身份验证,以便我可以使用 session.get 来检索我的订单

在开发人员工具中,这是实际的请求:

Request URL: https://secure.tesco.com/account/en-GB/login? 
from=https%3A%2F%2Fwww.tesco.com%2Fgroceries%2Fen-GB%2F
Request Method: POST
Status Code: 302 Moved Temporarily
Remote Address: 104.103.115.230:443
Referrer Policy: no-referrer-when-downgrade
Accept: text/html,application/xhtml+xml,application/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 141
Content-Type: application/x-www-form-urlencoded
Cookie: 

mytesco_segment_register=%7B%22segment%22%3A%22withMerge%22%2C%22;
mytesco_segment_forgottenPassword=%7B%22segment%22%3A%22new%22%2C%22;; 
mytesco_segment_notification=%7B%22segment%22%3A%22;
cookiesAccepted=1; 
mytesco_from=https%3A%2F%2Fwww.tesco.com%2Fgroceries%2Fen-GB%2F; 
cookiesAccepted=1546725466977; _csrf=dQoI2MTOmJKjhD4ycImJVQiF; 
akavpau_tesco_secure=1546725768~id=a6872943921fff98c4c7a240506d1766
Host: secure.tesco.com
Origin: https://secure.tesco.com
Pragma: no-cache
Referer: https://secure.tesco.com/account/en-GB/login? 
from=https%3A%2F%2Fwww.tesco.com%2Fgroceries%2Fen-GB%2F
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile 
Safari/537.36
from: https://www.tesco.com/groceries/en-GB/
username: *****
password: *****
state: 35c4c1b2-897c-40a9-9103-3b3b66e2a5b0
_csrf: zzS9vS3P-gw9jUzOV-jkELiZ-Yi-EBfUSg1E

我回到登录页面(几乎就像没有发生点击一样)。

标签: pythonsessionloginscreen-scraping

解决方案


鉴于您想与按钮交互,该任务可能更适合Selenium https://selenium-python.readthedocs.io/而不仅仅是requests


推荐阅读