如何使用Python的请求模块“登录”到网站?

如何使用Python的请求模块“登录”到网站?

我试图发布一个使用Python中的请求模块登录到网站的请求,但它并不真正有效。我对此并不熟悉.所以我不知道是否应该制作用户名和密码cookie,或者我找到的某种类型的HTTP授权(?)。

from pyquery import PyQueryimport requests

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

所以现在,我想我应该用“帖子”和“饼干”.

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”,如果是的话,应该是“Home Page”。

如果您能向我解释一些关于请求和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”。

第二版编辑:

我希望能够在很长一段时间内保持登录,每当我请求在该域下的一个页面,我希望内容显示,就像我已登录。


肥皂起泡泡
浏览 761回答 3
3回答

慕尼黑5688855

我知道你已经找到了另一个解决方案,但对于那些像我这样发现这个问题的人,寻找同样的东西,可以通过以下请求来实现:首先,就像Marcus所做的那样,检查登录表单的源以获取三条信息-表单发布到的url以及用户名和密码字段的name属性。在他的例子中,它们是inUserName和inUserPass。一旦你得到了它,你就可以用一个requests.Session()实例向登录url发出POST请求,并将登录详细信息作为有效负载。从会话实例发出请求与正常使用请求本质上是一样的,它只是增加了持久性,允许您存储和使用cookie等。假设您的登录尝试成功,您可以简单地使用会话实例向站点发出进一步的请求。标识您的cookie将用于授权请求。例import&nbsp;requests#&nbsp;Fill&nbsp;in&nbsp;your&nbsp;details&nbsp;here&nbsp;to&nbsp;be&nbsp;posted&nbsp;to&nbsp;the&nbsp;login&nbsp;form.payload&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;'inUserName':&nbsp;'username', &nbsp;&nbsp;&nbsp;&nbsp;'inUserPass':&nbsp;'password'}#&nbsp;Use&nbsp;'with'&nbsp;to&nbsp;ensure&nbsp;the&nbsp;session&nbsp;context&nbsp;is&nbsp;closed&nbsp;after&nbsp;use.with&nbsp;requests.Session()&nbsp;as&nbsp;s: &nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;s.post('LOGIN_URL',&nbsp;data=payload) &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;print&nbsp;the&nbsp;html&nbsp;returned&nbsp;or&nbsp;something&nbsp;more&nbsp;intelligent&nbsp;to&nbsp;see&nbsp;if&nbsp;it's&nbsp;a&nbsp;successful&nbsp;login&nbsp;page. &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p.text&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;An&nbsp;authorised&nbsp;request. &nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;=&nbsp;s.get('A&nbsp;protected&nbsp;web&nbsp;page&nbsp;url') &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;r.text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;etc...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python