首页 > 杂谈生活->cookiejar(Cookiejar库:Python爬虫中的必备之一)

cookiejar(Cookiejar库:Python爬虫中的必备之一)

草原的蚂蚁+ 论文 8865 次浏览 评论已关闭

Cookiejar库:Python爬虫中的必备之一

Python作为一门强大的编程语言,其在爬虫方面有着许多的优势。而Cookiejar库依靠Python语言自身特性的优势,更是在Python爬虫的开发过程中一个重要的工具微。

Cookiejar库介绍

Cookijar库是Python中的一个库,主要作用是用来处理HTTPcookie的。这样,就能够在Python网络爬虫开发中,很轻松地进行HTTP协议中cookie信息的管理。

Cookiejar库的核心思路是,模拟LWPCookiesJar,为HTTPcookie提供了内存Hold、文件和数据库等不同的存储方式,并提供了两种CookieJar类,分别为:

  • FileCookieJar(与文件相关联的cookie)
  • LWPCookieJar(与Libwww-perl标准的Set-Cookie3文件格式所创建的cookie)

CookiesJar库模拟了Web浏览器的cookie的处理方法,为HTTPcookie管理提供了内存抓持,可选的文件存储和DB存储等多种方式,并提供了两个构件CookieJar和FileCookieJar。使用cookijar模块可以无需考虑cookies的总数和大小等问题,通过简单的代码实现模拟登陆,并获取信息,实现数据的爬取。

Cookiejar库的用法

Cookiejar库在Python爬虫开发中提供了如此多的灵活性,使其默认成了爬虫开发中必用的库之一。下面针对Cookiejar库的基本用法进行探究:

cookiejar(Cookiejar库:Python爬虫中的必备之一)

CookieJar类与FileCookieJar类的具体使用

CookiesJar库可以说是和urllib2模块相辅相成的工具,为Cookie的获取和管理提供了强有力的支持,在实际爬虫编写过程中,完成一次爬取任务,就需要结合应用的CookieJar类来处理获取到的cookie,同时使用FileCookieJar类可以将cookie存储到本地,方便下一次的登录和爬取

在实际开发中,常规建议的使用方法是,创建一次特定URL的opener对象,因为该opener对象已经进行了URL的视频访问,赋予了足够的权利去生成对应的cookie,而且该种方法在操作时更为灵活简单,为后续操作提供了便利,代码如下:

cookiejar(Cookiejar库:Python爬虫中的必备之一)

```importurllib.requestimporthttp.cookiejarcookie=http.cookiejar.CookieJar()#构建cookie处理器,用于生成cookiehandle=urllib.request.HTTPCookieProcessor(cookie)#构造handleropener=urllib.request.build_opener(handle)#构造openerresponse=opener.open('http://www.baidu.com')#访问urlforitemincookie:print(item.name+\"=\"+item.value)```

在以上代码中,CookieJar类实例化生成了cookie处理器。另外的handler(文件操作器)在Python爬虫开发中是一个非常重要的角色,可以通过继承HTTPCookieProcessor类来自定义Handler来操作HTTP连接,同时我们可以通过urllib.request.build_opener()构造自己的opener对象,在进行URL访问时,赋予了足够的权限去生成对应的Cookie。如下代码构造了一个私人Opener:

```importurllib.requestimporthttp.cookiejarcookie_file='cookie_repository.txt'cookie=http.cookiejar.LWPCookieJar(cookie_file)#声明一个LWPCookieJar对象,用来存储cookiecookie_processor=urllib.request.HTTPCookieProcessor(cookie)#配置处理器opener=urllib.request.build_opener(cookie_processor)#定制openerloginUrl='http://www.baidu.com'req=urllib.request.Request(loginUrl)res=opener.open(req)cookie.save(ignore_discard=True,ignore_expires=True)```

CookieOpener的基本使用方法

在Python爬虫开发中,CookieOpener作为操作http请求中cookie的重要组成部分,下面介绍如何基于CookieOpener实现cookie的登录:

cookiejar(Cookiejar库:Python爬虫中的必备之一)

```importurllib.requestimporthttp.cookiejar#Cookie相关配置userName='userName'password='password'cookie_file='cookie_repository.txt'cookie_jar=http.cookiejar.LWPCookieJar(cookie_file)cookie_processor=urllib.request.HTTPCookieProcessor(cookie_jar)opener=urllib.request.build_opener(cookie_processor)#=====登录过程Start===========data={\"userName\":userName,\"password\":password}#登录名和密码loginUrl='http://www.baidu.com'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:54.0)Gecko/20100101Firefox/54.0'}postData=urllib.parse.urlencode(data).encode('utf-8')req=urllib.request.Request(loginUrl,postData,headers)res=opener.open(req)cookie_jar.save(ignore_discard=True,ignore_expires=True)html=res.read()print(html)#=====登录过程End=============#=====获取数据Start=============getDataUrl=\"http://www.baidu.com\"req=urllib.request.Request(getDataUrl)response=opener.open(req)html=response.read()print(html)#=====获取数据End=============```

在以上代码中,首先设置登录的用户名和密码,同时为cookie设置对应的存储文件,构建opener对象,并构造Request实例并传入url,headers和postData参数。实例中首先使用opener对象的open()方法,通过传入好的请求来发送请求信息、验证该请求并获取登录后的回应。

接下来,就可以通过获取登录后的回应来进行后续操作(如爬取网页信息)。CookieOpener的使用非常简单,只需要结合已经输出的CookieJar即可实现Cookie数据的存储和读取。

总结

Cookiejar库提供了Python爬虫中cookie数据的获取和管理,为网络爬虫开发提供了方便而实用的工具,同时也帮助开发者在更短的时间以及更少的精力企业解决爬虫开发中的问题。

在实际应用中,开发者们可以根据自身爬虫需求和开发经验灵活掌握Cookiejar库的使用方法,如使用CookieJar类与FileCookieJar类构建自定义HTTP请求标识,或使用CookieOpener实现简单的模拟登录。总之,Cookiejar库的优势在于其强大的应用性和良好的扩展性,是Python网络爬虫开发的必备之一。