首页 > 其他分享 >保存与读取cookie

保存与读取cookie

时间:2024-09-18 22:53:47浏览次数:8  
标签:index 读取 url jar 保存 headers opener cookie

接着爬取上次提过的网站。当前页面需要登录才能获取信息,编写爬虫自动登录,自定义opener对象添加可以保存cookie的HTTPCookieHandler处理器来发送请求,将cookie保存成cookie.txt文件,再读取cookie并向服务器发送请求获取目标网页信息。目标url为http://www.tuili.com/bbs/bbsShowDetail.asp?act=search&fid=260772&aid=&bid=29

登录请求url为http://www.tuili.com/bbs/bbslogincheck.asp,编码为GB2312。

运行代码

from urllib.request import Request, build_opener, HTTPCookieProcessor, urlopen
from fake_useragent import UserAgent
from urllib.parse import urlencode, quote, unquote
from http.cookiejar import MozillaCookieJar


def save_cookie():
    # 登录网页地址
    url = 'http://www.tuili.com/bbs/bbslogincheck.asp'
    # 创建UserAgent实例
    ua = UserAgent()
    # 封装请求头信息
    data = b'userid=%CF%C4%C8%D5%B1%F9%BA%EC%B2%E8&userpwd=Icedtea112'
    headers = {'user-agent': ua.chrome}
    # 创建Request对象
    req = Request(url, data=data, headers=headers)
    # 创建一个控制器用来辅助保存cookie
    cookie_jar = MozillaCookieJar()
    # 创建一个可以保存Cookie的控制器对象
    handler = HTTPCookieProcessor(cookie_jar)
    # 构建发送请求的对象
    opener = build_opener(handler)
    # 登录
    resp = opener.open(req)
    # 保存cookie到cookie.txt文件
    cookie_jar.save('cookie.txt', ignore_discard=True, ignore_expires=True)
    
    
def use_cookie():
    # 登录成功后获取目标网页html源代码
    index_url = 'http://www.tuili.com/bbs/bbsnewdoc.asp'
    headers = {'user-agent': UserAgent().chrome}
    index_req = Request(index_url, headers=headers)
    # 创建一个可以读取cookie为文件的对象
    cookie_jar = MozillaCookieJar()
    # 读取cookie文件
    cookie_jar.load('cookie.txt', ignore_discard=True, ignore_expires=True)
    # 创建一个控制器用来辅助读取cookie
    handler = HTTPCookieProcessor(cookie_jar)
    # 创建一个可以读取cookie的opener
    opener = build_opener(handler)
    # 发送请求,获取信息
    index_resp = opener.open(index_req)
    print(index_resp.read().decode('gb2312'))


if __name__ == '__main__':
    save_cookie()
    use_cookie()

运行结果(和手动登录查看的信息比对)

标签:index,读取,url,jar,保存,headers,opener,cookie
From: https://www.cnblogs.com/qyly/p/18419063

相关文章

  • android高程数据如何读取
    在Android中读取高程数据,通常涉及到地理信息系统(GIS)的应用,特别是当你需要处理像SRTM(ShuttleRadarTopographyMission)这样的数据集时。SRTM数据通常是HGT格式的16位整数栅格数据,每个文件代表了特定纬度和经度范围内的高程信息。下面是一些步骤和注意事项,帮助你在Android应用中读......
  • 自定义日志注解,保存信息到数据库
    定义日志注解importjava.lang.annotation.*;/***@authorwzw*@version1.0*@Date2023-2-1717:31:19*/@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceLog{/***描述*@return*/......
  • Kali下安装与使用BeEF:反射型与存储型XSS攻击、Cookie会话劫持、键盘监听及浏览器操控
    早八人,护网在即,该学习了~前言BEEFXSS(BrowserExploitationFrameworkXSS),更常见的称呼是BeEF(TheBrowserExploitationFramework),是一个开源的浏览器漏洞利用框架。它由MichałZalewski于2006年创建,旨在帮助渗透测试人员评估Web浏览器的安全性,发现并利用其中的漏洞。xss基......
  • 爬虫cookie的使用
    cookie是一种由网站创建并存储在用户计算机上的小型文本文件。访问该网站时由浏览器返回给服务器。cookie主要作用是帮助网站记住用户信息,包括但不限于:会话管理,网站使用cookie识别用户的会话,以便用户在浏览网站时不需要重复登录。个性化体验,通过存储用户的偏好设置,网站可以在用......
  • VBA_NZ系列工具NZ02:VBA读取PDF使用说明
    我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织成自己的程序呢?VBA可否能组织一个大型的程序呢?如何让VBA形成一个工具,拿来就用呢?在......
  • 使用 Spring Boot 的yml配置文件读取方式
    在Java项目中读取YML(YAML)配置文件有多种方式,尤其在使用SpringFramework(包括SpringBoot)时,更是提供了丰富的支持。以下是几种常见的方式来读取YML配置文件:1.使用SpringBoot的自动配置SpringBoot提供了对YML文件的自动化支持,这也是最常用的方式。1.1使用@Value......
  • java读取寄存器数据
    在Java中直接读取硬件寄存器(如CPU寄存器、I/O端口等)通常不是一个直接的任务,因为Java设计之初就是为了跨平台的安全性和易用性,它并不直接提供访问底层硬件的API。不过,在嵌入式系统、工业控制或需要直接与硬件交互的特定场景中,可能会使用JNI(JavaNativeInterface)或JNA(JavaNativeAc......
  • XXE之读取任意文件 BUUCTF [PHP]XXE
    开启BUUCTF靶场,打开链接:很明显是个phpinfo.php文件直接CtflF搜索flag,发现还真有,尝试输入flag看看什么情况?flag{cce98ec0-f1e6-416f-86d7-9b174202e678}呃呃,还真是flag,不过还是换种思路来做吧看到上面有个github的链接,点进去看看发现是一段例子和介绍,将其复......
  • 用python写一段代码:读取一张图片中的所有颜色信息,并按照占比大小,从大到小依次列出颜色
    fromPILimportImagefromcollectionsimportCounterimportnumpyasnpdefsave_colors_to_file(image_path,output_file):#打开图片文件image=Image.open(image_path)image=image.convert('RGB')#将图片转换为numpy数组pixels=np.ar......
  • 【Java+GDAL】读取shp文件的坐标信息(坐标系+EPSG码)
    文章目录前言一、GDAL和Java版本二、代码实现1.引入gdal环境2.读取坐标信息3.测试使用总结前言之前写了几篇与shp字段相关的文章。【Java+GDAL】shp新增属性字段与删除属性字段【Java+GDAL】读取shp信息(字段、要素属性等)Java使用gdal更改shp要素的字段属性值Ja......