前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >cookie在爬虫中的应用

cookie在爬虫中的应用

作者头像
生信修炼手册
发布于 2020-11-02 02:34:24
发布于 2020-11-02 02:34:24
1.7K00
代码可运行
举报
文章被收录于专栏:生信修炼手册生信修炼手册
运行总次数:0
代码可运行

欢迎关注”生信修炼手册”!

当爬取需要登录之后才可以获取的页面时,我们就可以借助cookie来实现。cookie是一种存储在本地浏览器中的用户认证信息,具体表现为一串字符串。当我们在浏览器中登录之后,可以通过F12查看对应的cookie信息,示例如下

cookie的表现形式是键值对,类似python中的字典,可以有多个键,有些网站还会对值进行加密处理。

cookie是一个动态信息,是和服务器交互之后生成的,具有时效性,在有效期内,cookie可以保持用户的登录状态,避免重复登录。当我们手动重新登录时,可以看到cookie的信息发生了变化

利用cookie的这一特性,一个简便的爬取办法是从浏览器获取cookie, 然后用该cookie来与网站交互,从而绕过了登录的限制。在urllib模块中的用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> headers = {
...   'Cookie': 'sessionid=feli4ngf23njptxxb0qma5tl04x8wc43; csrftoken=O9YSm7TMaIb2ZdqEnENJY1GBXj3xUE26',
...   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
... }
>>> request = urllib.request.Request('http://www.test.com', headers = headers)
>>> response = urllib.request.urlopen(request)

requests模块中的用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import requests
>>> headers = {
...   'Cookie': 'sessionid=feli4ngf23njptxxb0qma5tl04x8wc43; csrftoken=O9YSm7TMaIb2ZdqEnENJY1GBXj3xUE26',
...   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
... }
>>> r = requests.get('http://www.test.com', headers=headers)

如果是短时的数据采集操作,用这种方式还是相当便利的。为了克服cookie的时效性问题,也可以通过爬虫模拟登录,然后动态获取cookie信息。当然,模拟登录是比较复杂的,对于简单的用户名和密码登录的网站,程序处理还比较简单,对于需要验证码的网站,验证码的机器识别的难度决定了模拟登录的难度。

可以做到模拟登录的话,就可以通过http.cookiejar来自动管理cookie, 代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import urllib.request
>>> import http.cookiejar
>>>
>>> url = 'http://www.test.com'
>>> user = 'user'
>>> password = 'passwd'
>>> # 账号,密码的验证
>>> pwdmgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
>>> pwdmgr.add_password(None, url, user, password)
>>> auth_handler = urllib.request.HTTPBasicAuthHandler(pwdmgr)
>>>
>>> # cookie处理
>>> cookies = http.cookiejar.CookieJar()
>>> cookie_handler = urllib.request.HTTPCookieProcessor(cookies)
>>>
>>> # 构建opener
>>> opener = urllib.request.build_opener(auth_handler, cookie_handler)
>>>
>>> # 安装为全局
>>> urllib.request.install_opener(opener)
>>>
>>> r = urllib.request.urlopen(url)
>>>
>>> for item in cookies:
... print(item.name+'='+item.value)
...
sessionid=frrg9le03nkw959upu1bnrew9j4eu5ex

cookie可以保护我们的登录信息,适用于爬取需要登录之后才能查看的页面,手动管理操作简便,自动管理需要克服模拟登录的难点。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

更多精彩

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
URLError与Cookie
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)
小小杰啊
2022/12/21
2550
爬虫系列(4)深入urllib库并初步了解URLError与Cookie。
有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作
野原测试开发
2019/07/10
5250
爬虫学习之第一章网络请求
HTTP协议:全称是HyperText Transfer Protocol,中文意思是超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是80端口。 HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443端口。
py3study
2020/01/15
7100
Python中操作HTTP请求的urllib模块详解
urllib 是 Python 标准库中用于网络请求的库。该库有四个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser。
步履不停凡
2019/09/11
2.7K0
Python3爬虫学习笔记一 (get,post,cookie,proxy,agent)
常用的agent: https://blog.csdn.net/rookie_is_me/article/details/81634048
曼路
2019/05/26
6600
Python3网络爬虫(六):Python3使用Cookie-模拟登陆获取妹子联系方式
根据用户输入的网址,使用requests库向目标网站发起请求,获取对应的内容。然后使用BeautifulSoup对获取到的HTML代码进行解析,提取出邮件地址。最后将提取到的邮件地址保存到文件中。
Jack_Cui
2018/01/08
1.9K0
Python3网络爬虫(六):Python3使用Cookie-模拟登陆获取妹子联系方式
Python自带爬虫库urllib使用大全
这篇文章主要来讲解下Python自带的爬虫库urllib常见用法,主要围绕urllib定义、urllib的常用模块和urllib+lxml爬虫案例三个部分进行展开。
Python进阶者
2020/12/17
8180
54. Python 爬虫(3)
如果已经知道cookie,或者说你是通过抓包获取到的cookie,直接放在header的信息中直接登陆就可以;
py3study
2020/01/03
8000
54. Python 爬虫(3)
爬虫中网络请求的那些事之urllib库
urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据
HammerZe
2022/03/25
6470
爬虫中网络请求的那些事之urllib库
urllib高级用法--登陆和cookies的使用
对于一些更高级的操作(比如Cookies处理,代理设置,登陆验证),urllib怎么实现?需要更强大的工具Handler登场了,有专门处理登录验证的,有处理Cookies的,用处理代理设置的,几乎做到
py3study
2020/01/20
1.9K0
python3网络爬虫一《使用urllib.request发送请求》
在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。而在Python3中,已经不存在urllib2这个库了,统一为urllib。Python3 urllib库官方链接
全栈程序员站长
2022/08/02
5270
requests库常用函数使用——爬虫基础(1)
所有的前置环境以及需要学习的基础我都放置在【Python基础(适合初学-完整教程-学习时间一周左右-节约您的时间)】中,学完基础咱们再配置一下Python爬虫的基础环境【看完这个,还不会【Python爬虫环境】,请你吃瓜】,搞定了基础和环境,我们就可以相对的随心所欲的获取想要的数据了,所有的代码都是我一点点写的,都细心的测试过,如果某个博客爬取的内容失效,私聊我即可,留言太多了,很难看得到,本系列的文章意在于帮助大家节约工作时间,希望能给大家带来一定的价值。
红目香薰
2023/01/16
5190
Python模拟登录多种实现方式
Python模拟登录多种实现方式 基于Python 3.6 #coding:utf-8 import sys import io import urllib.request import http.cookiejar ################## 第一种登陆方式 ################## ################## 直接使用已知的cookie访问 ################## # #改变标准输出的默认编码 # sys.stdout = io.TextIOWrap
py3study
2020/01/13
8640
Python模拟登录的几种方法
  简单地说,cookie保存在发起请求的客户端中,服务器利用cookie来区分不同的客户端。因为http是一种无状态的连接,当服务器一下子收到好几个请求时,是无法判断出哪些请求是同一个客户端发起的。而“访问登录后才能看到的页面”这一行为,恰恰需要客户端向服务器证明:“我是刚才登录过的那个客户端”。于是就需要cookie来标识客户端的身份,以存储它的信息(如登录状态)。
菲宇
2019/06/13
4.3K0
Python模拟登录的几种方法
Python网络爬虫(实践篇)
读取内容常见的3种方式,其用法是: file.read()读取文件的全部内容,并把读取到的内容赋给一个字符串变量 file.readlines()读取文件的全部内容,并把读取到的内容赋给一个列表变量 file.readline()读取文件的一行内容
Python研究者
2020/09/28
7660
Python模拟登陆 —— 征服验证码 10 知乎(倒立文字验证码)
知乎的倒立文字验证码 # 登录知乎,通过保存验证图片方式 import urllib.request import urllib.parse import time import http.cookiejar webUrl = "https://www.zhihu.com/login/email"#不能写https://www.zhihu.com/#signin因为不支持重定向 webheader = { # 'Accept': 'text/html, application/xhtml+x
SeanCheney
2018/04/24
8600
Python模拟登陆 —— 征服验证码 10 知乎(倒立文字验证码)
Python爬虫模拟登录带验证码网站
本篇主要介绍了Python爬虫学习--Python爬虫模拟登录带验证码网站,通过具体的内容展现,希望对Python爬虫的学习有一定的帮助。
conanma
2021/11/01
2.8K0
解决 urllib2 中 CookiesMiddleware 的 cookie 问题
在网络爬虫开发中,Cookie 是一项关键的技术,用于跟踪用户的身份和状态。Cookie 是服务器在客户端存储的数据,通常用于维护用户会话和保存用户的登录信息。在爬虫应用中,模拟用户行为和保持 Cookie 状态是必要的,以便访问需要登录或受限制的页面。然而,使用 urllib2 库时,有效地处理 Cookie 问题成为一项具有挑战性的任务。
小白学大数据
2023/11/21
2501
Python:爬虫系列笔记(5) -- cookie的使用
大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了。 在此之前呢,我们必须先介绍一个opener的概念。 1.Opener 当你获取一个URL你使用
昱良
2018/04/04
1.4K0
Python:爬虫系列笔记(5) -- cookie的使用
重拾python爬虫之urllib
学习一门技术,总是要踩好多坑,然后收货一大堆疑惑,这么多相似的方式该学哪个呢?外面公司常用的是哪个呢? 就比如python爬虫,可以作为网络请求的方式有四种,按时间顺序排:
100000860378
2018/09/13
9340
重拾python爬虫之urllib
推荐阅读
相关推荐
URLError与Cookie
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验