Python爬虫模拟登录人人网:Session与Cookie两种实现方式
本文详解Python爬虫中模拟登录人人网的两种核心方法。首先介绍使用requests.Session()类自动维持会话状态,通过POST提交表单数据实现登录并抓取个人主页;其次演示如何手动提取并传递Cookie,分别通过Headers和Cookies参数访问受限页面。代码包含完整登录流程与本地保存逻辑,适用于学习爬虫会话保持机制。
使用Session维持登录状态
在Python的requests库中,提供了一个名为Session的类,专门用于维持客户端与服务器之间的会话状态,从而简化需要登录或保持连接的操作。
具体使用步骤如下:
第一步,实例化一个Session对象;
第二步,利用该Session对象发送GET或POST请求。
session = requests.session()
session.get(url,headers)
人人网登录实战:Session方式
接下来,我们将以人人网为例进行实战演示。
# coding=utf-8
import requests
session = requests.session()
# 登录的表单url
post_url = "http://www.renren.com/PLogin.do"
post_data = {"email": "your_email", "password": "your_password"}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
}
# 使用session发送post请求,cookie保存在其中
session.post(post_url, data=post_data, headers=headers)
# 在使用session进行请求登陆之后才能访问的地址
# 这是个人首页url
r = session.get("http://www.renren.com/327550088/profile", headers=headers)
# 保存页面到本地
with open("renren1.html", "w", encoding="utf-8") as f:
f.write(r.content.decode('utf-8'))
通过以上步骤,我们可以成功模拟登录人人网,并获取个人首页信息,最终将页面内容保存至本地文件。
手动传递Cookie访问受限页面
实际上,网站记录登录状态的核心机制是Cookie中携带的身份信息。如果我们能在发送请求时手动带上已登录的Cookie,同样可以访问那些仅限登录用户查看的页面。
通过Headers传递Cookie
具体实现代码如下:
# coding=utf-8
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
"Cookie":"你的登录cookie"
}
r = requests.get("http://www.renren.com/327550088/profile",headers=headers)
#保存页面
with open("renren2.html","w",encoding="utf-8") as f:
f.write(r.content.decode())
从代码中可以看出,Cookie可以直接放置在Headers字典中。值得注意的是,requests库还提供了一个专门的参数cookies,用于直接传递Cookie数据,这提供了另一种更简洁的处理方式。
通过Cookies参数传递Cookie
使用cookies参数的实现代码如下:
# 字典生成器的用法
cookies = {i.split("=")[0]:i.split("=")[1] for i in cookies.split("; ")}
print(cookies)
r = requests.get("http://www.renren.com/327550088/profile",headers=headers,cookies=cookies)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









