首页 > 编程语言 >Python爬虫系列之Session和cookie的使用

Python爬虫系列之Session和cookie的使用

时间:2023-03-07 09:36:12浏览次数:43  
标签:http Python 爬虫 Session cookie https requests

对于经常做数据采集的技术员来说,常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。今天我们就来谈谈 Session 和 cookie 的在python爬虫中的相关知识。

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”, ]#爬虫ip服务器(测试链接 http://jshk.com.cn/mb/reg.asp?kefu=xjy)
proxyHost = “http://jshk.com.cn” proxyPort = “30008”

#爬虫ip验证信息
proxyUser = “huake” proxyPass = “hk123” proxyMeta = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"#设置 http和https访问都是用爬虫ip
proxies = { “http”: proxyMeta, “https”: proxyMeta, }

#设置爬虫ip和重试策略
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)

标签:http,Python,爬虫,Session,cookie,https,requests
From: https://www.cnblogs.com/q-q56731526/p/17186950.html

相关文章

  • python_selenium(部分笔记)
    什么是自动化?自动化就是以人力驱动的测试行为转化为机械执行的一种过程目的:节省人力,时间或者硬件资源,提高测试效率哪些场景下适合做自动化?1,任务测试明确,不会频繁变动2,每日......
  • python—基础知识(部分笔记)
    命名注释快捷键变量名复制运算格式化字符   ①:%s格式化字符串   ②:%d格式化整数   ③:%f格式化浮点数字   ④:format()转义字符:\n  \t算术运算符:%取余......
  • python-模块与包
    一、模块模块的本质:具有一定功能(代码)的py文件,或者是文件夹,就是你之前写的代码有功能的都可以叫模块1、python模块的历史python刚开始的时候,所有搞其他编程语言的的程序......
  • Python 异步: 异步迭代器(15)
    动动发财的小手,点个赞吧!迭代是Python中的基本操作。我们可以迭代列表、字符串和所有其他结构。Asyncio允许我们开发异步迭代器。我们可以通过定义一个实现aiter()和......
  • python 学习笔记
     train_test_split函数在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”,从sklearn.model_selection中调用train_test_split函数 简单用法如......
  • Python Flask 之 路由和渲染模板讲解与示例演示
    目录一、概述二、路由三、渲染模板四、重定向和错误五、日志六、集成WSGI中间件一、概述Flask是一款使用Python编写的Web应用框架,其设计理念是轻量级和简单易学。......
  • Python实现人脸识别,对视频跟踪打码,拒绝少儿不宜!
    事情是这样的,昨天去表弟家,用了下他的电脑,不小心点到了他硬盘里隐藏的秘密,本来我只需要用几分钟电脑的,害得我硬是在电脑旁坐了几个小时~还好他爸妈不在家,不然表弟又要被......
  • Windows Server 2003 安装 python
    WindowsServer2003是32位的系统,最高支持的python版本是3.4下载python-3.4https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi D:\Python34\Scripts>pip......
  • python基础(2)
    1.什么是变量?为何要有变量?答:变量是存在变化的量,程序会一直变化,我们需要能反映出程序变化的东西,所以有了变量。2.变量的三大组成部分是?每部分的作用是什么?答:变量的三大组成......
  • python之路82 路飞项目、腾讯云短信开发、短信验证接口、短信登录接口、短信注册接口
    腾讯云短信开发前期准备工作:使用腾讯短信https://cloud.tencent.com,微信扫码登录搜索短信:https://console.cloud.tencent.com/smsv2创建短信签名:公......