我正在尝试输入我的用户名、密码并登录到网站。我是初学者,也是第一次尝试这个。我不知道我是否必须在此处包含任何其他数据。我正在尝试的示例网站是:http ://testing-ground.scraping.pro/login 。我正在传递我的凭据并通过打印 page.content 检查成功登录后是否出现欢迎页面的内容。但是它显示访问被拒绝的内容(当您输入错误的凭据时出现)。我不知道我在这里错在哪里。import requestswith HTMLSession() as c: url='http://testing-ground.scraping.pro/login?mode=login' usr='admin' pwd='12345' c.get(url) login_data=dict(username=usr,password=pwd) c.post(url,data=login_data) page=c.get('http://testing-ground.scraping.pro/login?mode=welcome') print(page.content)
2 回答
慕斯王
TA贡献1864条经验 获得超2个赞
我没有对此进行测试,但似乎您在请求中使用了错误的用户名和密码参数名称。快速检查站点发送的请求显示:
如您所见,在表单数据中,用户名发送为usr
,密码发送为pwd
。但是,你在构建登录数据的dict时,使用login_data=dict(username=usr,password=pwd)
了 , 构造了一个 , 的dict {"username": usr, "password": pwd}
,与实际请求的要求不符。你想要的是dict(usr=usr,pwd=pwd)
.
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
查看<form>
页面源代码中的标记。或者您可以检查网络选项卡以获取每个字段的名称值的发布请求。正确的字段名称是usr和pwd。
所以基本上改变这行代码:
login_data=dict(username=usr,password=pwd)
到
login_data=dict(usr=usr,pwd=pwd)
添加回答
举报
0/150
提交
取消