python 网络爬虫——cookie的使用

本文介绍如何使用Python的cookielib模块模拟网站登录过程。通过创建并管理Cookie对象,实现保存和加载Cookie,进而模拟用户的登录状态,抓取登录后页面的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是cookie?

  • Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

这里写图片描述

                   客户端访问服务器的过程              

为什么要使用cookie模拟登陆?

  • 有些网站需要登陆后才能访问摸个页面,在登陆之前,我们想访问某个页面内容是不允许的,那么我们可以利用urllib2库保存我们登陆的cookie,然后在利用这个cookie在抓取页面上的信息。

Cookielib模块

  • cookielib模块的主要作用是提供可存储cookie的对象,以便与urllib2模块配合使用来访问Internet资源。我们可以利用这个模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登陆功能。
父类              CookieJar
派生             FileCookieJar 
派生   MozillaCookieJar   LWPCookieJar

获取cookie

import urllib2,urllib
#用来管理cookie的包
import cookielib
url = 'http://www.baidu.com'

cookie = cookielib.CookieJar()   #1.创建cookie对象

cookie_handler = urllib2.HTTPCookieProcessor(cookie)    #2.创建cookie管理器

opener = urllib2.build_opener(cookie_handler)     #3.创建一个新的opener对象

response = opener.open(url)          #4.使用opener对象发起请求接收响应

for i in cookie:      #查看cookie
    print i`
###将cookie保存到文件中去

查看输出:
<Cookie BAIDUID=41667EBB76B45C1525CE362140D100C8:FG=1 for .baidu.com/>
<Cookie BIDUPSID=41667EBB76B45C1525CE362140D100C8 for .baidu.com/>
<Cookie H_PS_PSSID=1437_19036_21118_18560 for .baidu.com/>
<Cookie PSTM=1502460120 for .baidu.com/>
<Cookie BDSVRTM=0 for www.baidu.com/>
<Cookie BD_HOME=0 for www.baidu.com/>

将cookie保存到文件

import urllib2,urllib
#用来管理cookie的包
import cookielib
url = 'http://kaoshi.com:8888/edustu/login/login.spr'  #网址已更改

#参数
gold = {
    'j_username':'1521231275',   #这里我随便写的,可以用火狐firebug查看请求参数
    'j_password':'123456',
}
#编码
date = urllib.urlencode(gold)
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) '
             'Gecko/20100101 Firefox/54.0',
}
#创建request请求对象
request = urllib2.Request(url,data=date,headers = headers)    #相当于自己新创建了一个url

filename = 'cookie.txt'  #cookie

cookie2 = cookielib.MozillaCookieJar(filename = filename)    #1.创建cookie对象

cookie_handler= urllib2.HTTPCookieProcessor(cookie2)      #2.创建cookie管理器

opener = urllib2.build_opener(cookie_handler)      #3.创建一个新的opener对象

response = opener.open(request)       #4.使用opener对象发起请求接收响应

cookie2.save(ignore_discard= True,ignore_expires=True)

查看文件:
这里写图片描述

save()方法
def save(self, filename=None, ignore_discard=False, ignore_expires=False)

官方解释如下:
ignore_discard: save even cookies set to be discarded.

ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists

ignore_discard的意思是及时cookie将被求其也保存下来
ignore_expires的意思是如果在改文件中cookie已经存在,则覆盖原文件写入

利用cookie文件模拟用户登录

import urllib2
import cookielib

url = 'http://kaoshi.com:8888/edustu/me/edu/meda.spr' #已更改
headler = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) '
             'Gecko/20100101 Firefox/54.0',
}
#创建request请求对象
request = urllib2.Request(url,headers = headler)
#创建cookie对象
cookie = cookielib.MozillaCookieJar()
#加载cookie文件
cookie.load(filename='cookie.txt',ignore_discard=True,ignore_expires=True)
#创建cookie管理器
cookie_handler = urllib2.HTTPCookieProcessor(cookie)
#创建open对象
opener = urllib2.build_opener(cookie_handler)
#发送请求
resp = opener.open(request)
print resp.read()

可以看到那到的是登录后的页面源代码
这里写图片描述

总结:

  • 其实现在对于cookie的操作,我也只是限于这些简单的cookie利用,如何更加深入的利用cookie现在还是做不到,等以后更加深入的学习再2继续更新cookie的利用。
Python爬虫可以通过模拟登录的方式来抓取Cookie。模拟登录是指在爬取网页数据之前,先模拟用户登录网站并获取有效的Cookie,然后将Cookie添加到请求头中,以实现登录状态的模拟。这样就可以通过发送带有Cookie的请求来获取登录后的页面或者进行其他需要登录状态的操作。 要抓取Cookie,可以按照以下步骤进行操作: 1. 首先,需要使用Python的requests库发送登录请求,并提供正确的用户名和密码。这个过程可以使用POST请求来完成。 2. 接着,可以通过查看登录成功后的响应内容,找到包含登录后的Cookie信息的部分。可以使用浏览器的开发者工具或者抓包工具来查看响应内容。 3. 一旦找到了Cookie信息,可以将其提取出来并保存下来。可以使用Python的requests库中的cookies属性来获取Cookie信息。 4. 接下来,在后续的请求中,可以将获取到的Cookie添加到请求头中,以模拟登录状态。 需要注意的是,使用Cookie抓取数据时要注意遵守网站的规则和政策,并且尽量不要滥用Cookie。在不需要Cookie的情况下,尽量不去使用Cookie,以免引起网站的不必要的注意或封禁。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python爬虫——Cookie模拟登录](https://blog.youkuaiyun.com/wpc2018/article/details/125789191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python 爬虫(cookie)](https://blog.youkuaiyun.com/sonflower123/article/details/124748949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值