繁体   English   中英

使用Python登录并进行请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM