python - 努力创建一个会话,以便我可以登录到一个站点并通过 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
我回到登录页面(几乎就像没有发生点击一样)。
解决方案
鉴于您想与按钮交互,该任务可能更适合Selenium
https://selenium-python.readthedocs.io/而不仅仅是requests
推荐阅读
- python - Flow-Project 教程 04 Visualizer_rllib.py 报错
- r - 使用 dot-dot 时为 data.table 赋值
- javascript - 在weakmaps中设置新值时我们会改变状态吗?
- google-cloud-platform - Google Cloud Billing --> 我可以添加可以添加/管理信用卡的同事吗?
- r - 当 ggplot 在拆分图表中位置“堆叠”时处理条形大小和总数
- ansible - 如何从 ansible playbook 中的返回值访问“调用”变量?
- node.js - 使用 nock 从 docker 容器发出请求?
- database - DB推荐——便携、并发(多读一写)
- javascript - 已经被 JS 验证的表单。还需要在提交时清除字段
- python-3.x - NumPy np.chararray 到 nd.array