python爬虫中Session 和 cookie的使用

简介: python中如何使用Session 和 cookie 的相关知识。

在日常采集数据的过程中,我们经常会遇到有些页面只有登录之后我们才可以访问,并且在登录之后可以连续进行一系列操作,但是有些时候又需要重新进行登录。甚至有些网站登录很长的时间都不会失效,这种情况又是为什么?其实这里面涉及到 Session 和 cookie 的相关知识。

{D300658A-56FB-9809-9E93-67442BC11C30}.jpg

cookie的基本知识想必大家做爬虫的都很清楚,关于Session这里可以好好的解释下,Session最简单的理解就是会话,主要作用就是用来记录一个用户在目标网站上的一些行为、一些状态,而这些用户状态可以利用Cookie中的Session ID来标识。

cookie和Session一般会在网站的反爬中应用中比较常见。

在访问某些网站的时候,是需要先进行登录才能进行下一步操作的。如果利用爬虫程序模拟人登陆的行为,主要有以下三种:

  1. 爬虫代码里通过request.post里的参数data中,有自己的登录的账号信息。
  2. 访问页面的时候,从header是中找到cookie并复制,写到python脚本里的headers中,但是在使用过程中cookie的时效性也是需要考虑的。
  3. 通过session方法,是比较推荐的一种方式,比如python使用Keep-Alive保持相同代理IP进行采集,并进行状态判断,失败后重新发起,代码如下:
#! -- encoding:utf-8 -- import requests import requests.adapters import time # 导入time模块,用于等待
#要访问的目标页面
targetUrlList = [ “https://httpbin.org/ip”, “https://httpbin.org/headers”, “https://httpbin.org/user-agent”, ]
#代理服务器(产品官网 www.16yun.cn)
proxyHost = “t.16yun.cn” proxyPort = “31111”
#代理验证信息
proxyUser = “16yun” proxyPass = “16ip” proxyMeta = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
#设置 http和https访问都是用HTTP代理
proxies = { “http”: proxyMeta, “https”: proxyMeta, }
#设置代理和重试策略
adapter = requests.adapters.HTTPAdapter( proxy=proxies, max_retries=3 )
#访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP
with requests.session() as s: # 设置cookie # cookie_dict = {“JSESSION”:“123456789”} # cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True) # s.cookies = cookies
# 为session设置代理和重试策略
s.mount("http://", adapter)
s.mount("https://", adapter)
for i in range(3):
    for j, url in enumerate(targetUrlList):
        r = s.get(url)
        # 判断状态码是否为200,如果不是,等待1秒后重试
        while r.status_code != 200: # 添加循环条件
            print(f"第{i+1}次访问第{j+1}个网站的状态码为{r.status_code},等待1秒后重试")
            time.sleep(1) # 等待1秒
            r = s.get(url) # 重新发起请求
        print(f"第{i+1}次访问第{j+1}个网站的结果:")
        print(r.text)
相关文章
|
7天前
|
数据采集 存储 JSON
Python爬虫开发:BeautifulSoup、Scrapy入门
在现代网络开发中,网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据,并且可以用于各种用途,如数据收集、信息聚合和内容监控等。在Python中,有多个库可以用于爬虫开发,其中BeautifulSoup和Scrapy是两个非常流行的选择。本篇文章将详细介绍这两个库,并提供一个综合详细的例子,展示如何使用它们来进行网页数据爬取。
|
11天前
|
数据采集 数据可视化 算法
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
本文设计并实现了一个基于Python的豆瓣电影TOP250爬虫与可视化系统,通过获取电影评分、评论并应用词云和饼图等可视化技术,为用户提供了电影评价的直观展示和深入分析。
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
|
11天前
|
数据采集 数据可视化 关系型数据库
【python案例】基于Python 爬虫的房地产数据可视化分析设计与实现
本文设计并实现了一个基于Python爬虫的房地产数据可视化分析系统,通过BeautifulSoup框架采集房源信息,使用pandas进行数据处理,MySQL存储数据,并利用pyecharts进行数据可视化,以帮助用户更直观地了解房源信息并辅助选房购房。
|
11天前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
11天前
|
数据采集 XML 数据可视化
【优秀python案例】基于Python的口红商品的爬虫与可视化的设计与实现
本文介绍了一个基于Python的京东商城口红商品爬虫与可视化系统,通过requests和lxml库抓取商品信息,使用pandas进行数据处理,matplotlib进行数据可视化,分析了口红的价格、评论数(销量)分布以及自营口红品牌的销量和商品种类。
【优秀python案例】基于Python的口红商品的爬虫与可视化的设计与实现
|
8天前
|
数据采集 存储 JSON
Python爬虫
【8月更文挑战第11天】
27 14
|
1天前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
20 6
|
6天前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
19 4
|
10天前
|
数据采集 前端开发 JavaScript
CSS与Python爬虫
【8月更文挑战第9天】
16 8
|
6天前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
本文详细介绍了如何使用Python爬取简单的网页数据,以掘金为例,展示了从发送HTTP请求、解析HTML文档到提取和保存数据的完整过程。通过这个示例,你可以掌握基本的网页爬取技巧,为后续的数据分析打下基础。希望本文对你有所帮助。