[英]Log in with Python and Requests
我一直试图访问没有API的网站。 我想从网站上检索当前的“队列”。 但是,如果我没有登录,它不会让我访问网站的这一部分。这是我的代码:
login_data = {
'action': 'https://www.crunchyroll.com/?a=formhandler',
'name': 'my_username',
'password': 'my_password'
}
import requests
with requests.Session() as s:
s.post('https://www.crunchyroll.com/login', data=login_data)
ck = s.cookies
r = s.get('https://www.crunchyroll.com/home/queue')
print r.text
现在,我得到一个页面:
<html lang="en">
<head>
<title>Redirecting...</title>
<meta http-equiv="refresh" content="0;url=http://www.crunchyroll.com/home/queue" />
</head>
<body>
<script type="text/javascript">
document.location.href="http:\/\/www.crunchyroll.com\/home\/queue";
</script>
</body>
</html>
我认为应该可以,但是我只会得到重定向页面……我想如何才能克服它?
谢谢 !
发生重定向是因为您没有正确登录站点-POST请求的表单URL错误,并且您没有发布站点期望的所有表单数据。
您可以通过查看https://www.crunchyroll.com/login
的源代码来了解登录所需的内容。 重要的部分是<form>
标记和<input>
标记:
<form id="RpcApiUser_Login" method="post" action="https://www.crunchyroll.com/?a=formhandler">
<input type="hidden" name="formname" value="RpcApiUser_Login" />
<input type="text" name="name" value="my_user_name_goes_here" /></td>
<input type="password" name="my_password_goes_here" /></td>
</form>
这意味着当您单击Submit时,将向URL https://www.crunchyroll.com/?a=formhandler
发出POST请求,并带有键/值对数据,例如formname=RpcApiUser_Login
。 要在Python中复制此代码,您需要将所有这些相同的数据对发布到该URL。
要了解有关CGI编程的更多信息,请参见此处 。
试试下面的Python代码,它可以工作:
import requests
login_data = {
'name': 'my_username',
'password': 'my_password'
'formname': 'RpcApiUser_Login'
}
with requests.Session() as s:
s.post('https://www.crunchyroll.com/?a=formhandler', data=login_data)
r = s.get('http://www.crunchyroll.com/home/queue')
print r.text
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.