当前位置: 首页 > news >正文

15分钟学 Python 第38天 :Python 爬虫入门(四)

Day38 : Python爬虫异常处理与反爬虫机制

章节1:异常处理的重要性

在爬虫开发过程中,网络请求和数据解析常常会遭遇各种异常。正确的异常处理可以提高程序的稳定性,避免崩溃,并帮助开发者快速定位问题。

章节2:常见的异常类型

在爬虫开发中,主要有以下几种异常:

异常类型描述
requests.exceptions.RequestException基类异常,用于处理所有请求异常
requests.exceptions.HTTPError表示HTTP错误,例如404或500错误
requests.exceptions.ConnectionError表示网络连接错误
requests.exceptions.Timeout请求超时错误
requests.exceptions.TooManyRedirects请求重定向过多

章节3:异常处理示例

下面的代码展示了如何在发送请求时进行异常处理:

import requestsdef fetch_url(url):try:response = requests.get(url)response.raise_for_status()  # 如果403或404都会引发异常return response.textexcept requests.exceptions.HTTPError as http_err:print(f"HTTP错误: {http_err}")except requests.exceptions.ConnectionError:print("连接错误,请检查网络连接。")except requests.exceptions.Timeout:print("请求超时,请重试。")except requests.exceptions.RequestException as e:print(f"请求时发生错误: {e}")return Noneurl = 'http://example.com'
data = fetch_url(url)
if data:print(data)

章节4:反爬虫机制概述

反爬虫机制是网站采用的一系列技术手段,用以阻止或限制爬虫的访问。常见的反爬虫策略包括:

反爬虫机制描述
用户代理检查检查请求的User-Agent是否正常
IP限制限制特定IP地址的请求频率
验证码在请求中插入验证码以确认用户身份
Cookie验证使用Cookies验证用户身份
动态内容加载使用JavaScript动态加载部分内容,爬虫无法直接获取

章节5:处理反爬虫机制

为了应对反爬虫机制,爬虫开发者可以采取一些策略:

5.1 设置用户代理(User-Agent)

伪装成浏览器发送请求:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
5.2 使用代理

通过代理服务器绕过IP限制:

proxies = {'http': 'http://your_proxy:port','https': 'http://your_proxy:port',
}
response = requests.get(url, proxies=proxies)
5.3 添加延迟

限制请求频率,以避免被封:

import timefor i in range(5):response = requests.get(url)print(response.status_code)time.sleep(2)  # 每次请求间隔2秒

章节6:完整示例 - 反爬虫处理

以下是一个示例程序,展示了如何应对反爬虫机制和进行异常处理。

import requests
import timedef fetch_url(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}proxies = {'http': 'http://your_proxy:port','https': 'http://your_proxy:port',}try:response = requests.get(url, headers=headers, proxies=proxies)response.raise_for_status()return response.textexcept requests.exceptions.HTTPError as http_err:print(f"HTTP错误: {http_err}")except requests.exceptions.ConnectionError:print("连接错误,请检查网络连接。")except requests.exceptions.Timeout:print("请求超时,请重试。")except requests.exceptions.RequestException as e:print(f"请求时发生错误: {e}")url = 'http://example.com'
for i in range(5):data = fetch_url(url)if data:print(f"请求成功: {len(data)} 字节")time.sleep(2)  # 每次请求间隔2秒

章节7:流量控制与限频策略

7.1 请求频率控制

为了避免触发反爬虫机制,可以设置请求频率:

  • 随机延迟:使用随机数生成请求间隔。
import randomfor i in range(5):delay = random.uniform(1, 5)  # 随机1到5秒之间time.sleep(delay)data = fetch_url(url)

章节8:异常和反爬虫的调试工具

工具描述
Fiddler网络调试代理,查看HTTP请求和响应头信息
PostmanAPI开发工具,测试HTTP请求
Selenium处理动态网页抓取,可以完整自动化浏览器行为

章节9:总结

在本节中,我们详细探讨了Python爬虫中的异常处理与反爬虫机制。学习如何有效处理各种异常,并采取合理的反爬虫策略,以增强爬虫程序的稳定性和抗压能力。

通过掌握这些技能,您将更加自信地编写高效、稳健的爬虫,抓取互联网中的各种数据,帮助实现数据分析和应用开发。


在这里插入图片描述
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

http://www.lryc.cn/news/453312.html

相关文章:

  • GWAS分析中显著位点如何注释基因:excel???
  • 深入浅出 CSS 定位:全面解析与实战指南
  • HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘
  • Android 13.0 系统内存优化之修改dalvik虚拟机的内存参数
  • C# 无边框窗体,加阴影效果、多组件拖动、改变大小等功能完美实现优化版效果体验
  • 深入解析 ChatGLM 模型:核心原理、优势与未来应用前景
  • python全栈学习记录(二十二)多态性、封装、绑定方法与非绑定方法
  • 用Python制作自己的聊天机器人:从零开始构建智能对话助手
  • LabVIEW裂纹深度在线监测系统
  • 工业物联网的伦理和社会影响
  • TCP --- 确认应答机制以及三次握手四次挥手
  • GPT带我学-设计模式17-装饰器模式
  • 【Redis】如何在 Ubuntu 上安装 Redis 5
  • 房屋水电费记账本:内置的数组数据击按钮不能删除,页面手动添加的可以删除
  • 【ubuntu】apt是什么
  • 堆排序算法的原理与应用
  • 【2024版本】Mac/Windows IDEA安装教程
  • Oracle bbed编译安装及配置
  • MindSearch 部署到Github Codespace 和 Hugging Face Space
  • 【Maven】依赖管理,Maven仓库,Maven核心功能
  • Android wifi信号和漫游信号设置
  • 检查cuda和显卡的可用性
  • Kotlin:2.0.20 的新特性
  • Python内存管理与泄漏排查实战
  • 828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp
  • 初学51单片机之I2C总线与E2PROM二
  • Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka
  • 结合vueuse实现图片懒加载
  • Mysql数据库--聚合查询、分组查询、联合查询(不同的连接方式)
  • 计算机视觉——图像修复综述篇