Python爬虫(9):Cookie介绍和模拟登录
大家好,这篇文章我们来看一下Cookie
是什么,和他的一些用法。
什么是Cookie?
在计算机术语中是指一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。
先看看Cookie
长什么样子,我们以知乎为例。打开Chrome
的开发者工具(F12)
,点开Network
,点击一个请求url
,就可以看到请求头(Request Headers)
里面的一个Cookie
信息了。当然我们从上面的响应头中可以看到一个Set-Cookie
的信息,这就是服务器向浏览器设置Cookie
的一些信息,比如Cookie
的作用域,时间等。
Cookie的用途
- 存储用户登录信息,判断用户是否登录;
- 保存用户浏览足迹;
Cookie
是服务器在客户端存储的信息。这些信息是有服务器生成服务器解释的。
请求时,客户端需要把未超时的Cookies
发送给服务器。服务器需要解析Cookies
判断用户信息。
我们的浏览器会在你每次浏览网页是自动存储cookie
,比如你打开清除浏览器浏览记录时,就会有cookie
信息。
cookie
给我们带来了很多便利,他还可以记录我们的浏览足迹,停留页面时间。比如你狂淘宝的时候,淘宝的推荐你喜欢的宝贝,就是根据你的cookie
,获取你浏览过哪些商品,而生成的。
模拟登录演示
我们还是以知乎为例。https://www.zhihu.com/people/yu-kun-73/answers
这个URL
是我的知乎信息页,当然大家可以使用自己的知乎页做例子。如果我们直接访问他,会看到上方的登录按钮,而是我已经登录了在访问呢。就不会显示登录按钮,而是个人编辑资料一些链接。
那么,如果我们使用爬虫去访问呢。
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } url = 'https://www.zhihu.com/people/yu-kun-73/answers' resp = requests.get(url, headers=headers).text print(resp)
通过打印的结果,我们可以看到,html 代码里是有登录按钮的。这就证明我们并没有登录这个页面。那么,如果我们在爬取一些需要登录账号才可以爬取数据的网站时,我们必然是要解决登录问题的。那么如何实现登录呢。
答案就是我们的Cookie
了。我们在之前的文章中说过,requests
库在处理Cookie
时,是非常简单的。我们只需要向添加‘User-Agent’一样添加请求cookies
就可以了。
import requests headers = { 'Cookie': # 你的登录过后的浏览器cookies, 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } url = 'https://www.zhihu.com/people/yu-kun-73/answers' resp = requests.get(url, headers=headers).text print(resp)
我们再次看打印信息,就可以看到有编辑个人资料的链接了。这就说明我们已经成功登录了。是不是很简单呢,别急,难的在后面呢。
最后
那么,如果我们要登录一些复杂的网站,比如新浪微博这种必须要登录才能获取信息的网站,使用cookie
登录是肯定行不通的。因为这些网站会经常更新一些网站的算法,我们的cookie
就会在工作一会失效,那么这些网站我们就需要向登录页post
我们的登录信息。
这些登录信息参数一般都会存放在登录页的请求头下面的Form Data
里面,我们只要携带这些信息Post
,就可以顺利登录。但是如果遇到验证码,那么就很麻烦了。验证码的问题一直是考验爬虫的一个门槛,这个大家自己研究。
但是我们有一个最后的大杀器,Selenium+PhantomJS
。这是什么呢?我们后面单独介绍。
谢谢阅读
系列文章
- Python爬虫(1):基本原理
- Python爬虫(2):Requests的基本用法
- Python爬虫(3):Requests的高级用法
- Python爬虫(4):Beautiful Soup的常用方法
- Python爬虫(5):豆瓣读书练手爬虫
- Python爬虫(6):煎蛋网全站妹子图爬虫
- Python爬虫(7):多进程抓取拉钩网十万数据
- Python爬虫(8):分析Ajax请求爬取果壳网
- Python爬虫(9):Cookie介绍和模拟登录
- Python爬虫(10):Selenium+PhantomJS基本操作
- Python爬虫(11):Scrapy框架的安装和基本使用
- Python爬虫(12):Scrapy组件的用法
- Python爬虫(13):Scrapy实战抓取网易云音乐
相关推荐
-
爬虫之数据解析的三种方式 网络爬虫
2019-3-22
-
在Scrapy中运用Selenium和Chrome 网络爬虫
2019-8-26
-
记录openlaw的反爬 网络爬虫
2019-5-10
-
golang实现抓取IP地址的蜘蛛程序 网络爬虫
2019-3-23
-
looter——超轻量级爬虫框架 网络爬虫
2019-2-22
-
【Sasila】一个简单易用的爬虫框架 网络爬虫
2019-4-27
-
Scrapy CSS选择器 网络爬虫
2019-11-1
-
Python3获取拉勾网招聘信息 网络爬虫
2019-4-3
-
爬虫入门系列(三):用 requests 构建知乎 API 网络爬虫
2018-2-20
-
爬虫技术:(JavaScript渲染)动态页面抓取超级指南 网络爬虫
2018-3-4