为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Python的Requests模块“登录”网站?

/ 猿问

如何使用Python的Requests模块“登录”网站?

慕瓜9086354 2019-10-12 11:07:10

如何使用Python的Requests模块“登录”网站?

我试图使用Python中的Requests模块发布登录网站的请求,但它并没有真正起作用。我是新手...所以我无法弄清楚我是否应该创建我的用户名和密码cookie或我找到的某种类型的HTTP授权(??)。

from pyquery import PyQueryimport requests

url = 'http://www.locationary.com/home/index2.jsp'

所以现在,我想我应该使用“post”和cookies ....

ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}r = requests.post(url, cookies=ck)content = r.text

q = PyQuery(content)title = q("title").text()print title

我有一种感觉,我做饼干的事情错了......我不知道。

如果它没有正确登录,主页的标题应该出现在“Locationary.com”,如果是,它应该是“主页”。

如果您可以向我解释有关请求和cookie的一些事情并帮助我解决这个问题,我将非常感激。:d

谢谢。

......它仍然没有真正起作用。好的......所以这就是主页HTML在您登录之前所说的内容:

</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif">    </td><td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName"  size="25"></td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td><td><input  class="Data_Entry_Field_Login"  type="password" name="inUserPass"     id="inUserPass"></td>

所以我认为我做得对,但输出仍然是“Locationary.com”

第二次编辑:

我希望能够长时间保持登录状态,每当我在该域下请求页面时,我希望内容显示为好像我已登录。


查看完整描述

3 回答

?
qq_遁去的一_1

如果您想要的信息在页面上,您将在登录后立即前往...

让我们调用你的ck变量payload,就像在python-requests文档中一样:

payload = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}url = 'http://www.locationary.com/home/index2.jsp'requests.post(url, data=payload)

除此以外...

请参阅下面的https://stackoverflow.com/a/17633072/111362



查看完整回答
反对 回复 2019-10-13
?
慕村225694

我知道你已经找到了另一个解决方案,但是对于像我这样找到这个问题的人来说,寻找相同的东西,可以通过以下请求来实现:

首先,正如Marcus所做的那样,检查登录表单的来源以获取三条信息 - 表单发布到的URL,以及用户名和密码字段的名称属性。在他的示例中,它们是inUserName和inUserPass。

完成后,您可以使用requests.Session()实例向登录URL发送请求,并将您的登录详细信息作为有效负载。从会话实例发出请求与通常使用请求基本相同,它只是添加持久性,允许您存储和使用cookie等。

假设您的登录尝试成功,您只需使用会话实例进一步请求该站点。标识您的cookie将用于授权请求。

import requests# Fill in your details here to be posted to the login form.payload = {
    'inUserName': 'username',
    'inUserPass': 'password'}# Use 'with' to ensure the session context is closed after use.with requests.Session() as s:
    p = s.post('LOGIN_URL', data=payload)
    # print the html returned or something more intelligent to see if it's a successful login page.
    print p.text    # An authorised request.
    r = s.get('A protected web page url')
    print r.text        # etc...



查看完整回答
反对 回复 2019-10-13
?
ITMISS

让我试着简单一点,假设网站的网址是http://example.com/,让我们假设您需要通过填写用户名和密码来注册,所以我们转到登录页面说http:// example。 com / login.php现在查看它的源代码并搜索它将在表单标签中的操作URL

 <form name="loginform" method="post" action="userinfo.php">

现在用userinfo.php创建绝对URL,它将是' http://example.com/userinfo.php ',现在运行一个简单的python脚本

import requests
url = 'http://example.com/userinfo.php'values = {'username': 'user',
          'password': 'pass'}r = requests.post(url, data=values)print r.content

我希望有一天能帮到某个地方。



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信