下面我将为你详细讲解 “Python3 Post登录并且保存cookie登录其他页面的方法”。
简介
在web爬虫开发过程中,登录并保持会话状态是常见的需求。本文主要讲解如何使用Python3模拟post请求登录,并在登录后保持会话状态,实现cookie重用登录其他页面。
1. 实现登录
首先,我们需要发送登录请求以获得有效的cookie,首先需要构建登录表单信息,并向login url发送POST请求,代码如下:
import requests
login_data = {'username': 'your_username', 'password': 'your_password'}
login_url = 'http://www.example.com/login'
response = requests.post(login_url, data=login_data)
其中,'http://www.example.com/login'是你自己网站登录的url地址。 login_data是你提交表单时的所有参数,格式为字典。requests.post方法会返回一个Response对象,其中包含服务器响应的所有内容。
为了验证登录是否成功,可以通过打印response.text查看响应内容。如果登录成功,那么程序将接下来的请求自动使用正确的cookie。
2. 使用cookies访问受限页面
restricted_page_url = 'http://www.example.com/restricted_page'
response = requests.get(restricted_page_url, cookies=response.cookies)
上面代码中,restricted_page_url是需要使用已登录的cookies才能访问的页面url。通过cookies参数将Response对象中的cookie传递给GET请求。这里使用了response.cookies属性从一次请求中获取所有cookie,不需要手动设置cookie。
如果需要访问更多的需要登录认证的页面,只需要重复上述步骤即可。
示例说明
我们以模拟登录拉勾网为例:
import requests
url = 'https://passport.lagou.com/login/login.html'
post_url = 'https://passport.lagou.com/login/login.json'
header = {'Referer': 'https://passport.lagou.com/login/login.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
post_data = {'username': 'youremail@address.com', 'password': 'yourpassword', 'request_form_verifyCode': '',
'submit': ''}
session = requests.Session()
session.post(post_url, data=post_data, headers=header)
target_url = 'https://www.lagou.com/resume/myresume.html'
response = session.get(target_url)
print(response.text)
在上面的示例中,首先我们构建了登录用到的post_url和登录数据post_data,从浏览器中获取了一些请求头作为header。然后建立一个session,这是一个cookie会话机制,每次用session发送的请求都会自动携带上次请求的cookie,为模拟登录保持状态时的核心操作。最后用session.post方法模拟登录请求,将结果存储在session中 。接下来用session.get方法获取需要登录才能访问的页面response。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3 Post登录并且保存cookie登录其他页面的方法 - Python技术站