python爬虫系列之Session相关知识

简介: python爬虫系列之Session相关知识

作为爬虫工作者,日常工作中常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。网站的反爬措施有很多,今天我们就来谈谈 Session 和 cookie 的在python爬虫中的相关知识。
关于cookie的基本知识之前分享了很多,关于Session这里可以好好的解释下,Session 就一个接口(HttpSession)即就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。因为每个客户端都有自己的一个 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)

```

相关文章
|
14天前
|
数据采集 JSON 算法
Python爬虫——模拟登录
Python爬虫——模拟登录
91 3
|
14天前
|
数据采集 JSON 算法
Python爬虫——基于JWT的模拟登录爬取实战
Python爬虫——基于JWT的模拟登录爬取实战
37 1
Python爬虫——基于JWT的模拟登录爬取实战
|
22天前
|
数据采集 存储 JavaScript
构建你的第一个Python网络爬虫
【9月更文挑战第34天】在数字信息泛滥的时代,快速有效地获取和处理数据成为一项重要技能。本文将引导读者通过Python编写一个简易的网络爬虫,实现自动化地从网页上抓取数据。我们将一步步走过代码的编写过程,并探讨如何避免常见陷阱。无论你是编程新手还是想扩展你的技术工具箱,这篇文章都将为你提供有价值的指导。
68 18
|
11天前
|
数据采集 缓存 Java
Python vs Java:爬虫任务中的效率比较
Python vs Java:爬虫任务中的效率比较
|
18天前
|
数据采集 存储 数据处理
Python爬虫-数据处理与存储(一)
Python爬虫-数据处理与存储(一)
42 0
|
23天前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
144 66
|
10天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
14天前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
20 2
|
14天前
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
27 2
|
17天前
|
数据采集 XML 数据格式
Python爬虫--xpath
Python爬虫--xpath
13 1