Python爬虫编写乱码问题、验证码登录问题和IP代理问题解决

news2024/11/25 2:22:03

今天继续给大家介绍Python爬虫相关知识,本文主要内容是Python爬虫编写乱码问题、验证码登录问题和IP代理问题解决。

一、乱码问题解决

我们在使用Python爬虫爬取网页信息时,有时会遇上乱码问题(特别是爬取中文网页信息时),如果出现了乱码问题,那么解决方法大致如下:
第一种方法是设置响应数据编码,相关代码如下所示:

response=requests.get(url)
reponse.encoding='utf-8'
page_text=response.text

另一种方法是对出现乱码的字符串进行处理,相关代码如下所示:

name=tree.xpath('……')
name=name.encode('【乱码变量本来的编码】').decode('Python设置的编码格式')

在上述代码中,我们在获取到了指定内容后,是一个字符串形式的变量。我们对该变量进行encode()编码处理后,就把一个字符串类型的变量转化为一个字节流类型的变量,然后把一个字节流类型的变量进行解码后,就又恢复为一个字符串类型的变量。我们使用该变量原有的编码格式进行编码,使用Python自带的编码格式进行解码,就可以解决乱码问题了。

二、验证码登录问题解决

有时,我们在使用Python爬虫模拟登录时,会遇上需要我们输入验证码的情况。验证码是进行人机识别的有效步骤,但是通过一定的步骤,我们可以编写程序来实现这一验证操作。现在网上有很多验证码在线识别平台,可以帮助我们识别各种种类的验证码。例如:云码,URL为:https://zhuce.jfbym.com/test/
可以识别的验证码类型如下所示:
在这里插入图片描述
我们可以登录这样的平台,并注册该平台账号(这样的平台很多都是要花钱的,但是如果识别量不大的话,花的钱不多),这样就可以在Python爬虫登录时,将验证码交给该网页处理,然后该网页会把处理结果反馈,我们就可以使用这种反馈的结果来进行输入或其他处理了。

三、IP代理问题解决

我们在使用爬虫爬取网页时,如果爬取速度过快,容易被网页封禁IP,这是各种网页常用的反爬机制(也是防CC流量攻击的一种措施)。针对这种机制,我们以方便可以设置访问的速度,Python在引入time库后,调用sleep()函数,在爬取操作后人为延时一段时间,避免访问速度过快,也可以使用IP代理技术。
IP代理类似一个“中转站”,可以隐藏自身的真实IP,但是不同的代理有不同的匿名度,匿名度可以粗略的可以分为四类——透明代理、匿名代理、混淆代理和高匿代理。这四类代理主要区分在HTTP访问中,区别在于REMOTE_ADDR、HTTP_VIA和HTTP_X_FORWARDED_FOR三个HTTP头字段。
这四种代理方式的三个HTTP头字段区别如下表所示:

代理方式\HTTP字段REMOTE_ADDRHTTP_VIAHTTP_X_FORWARDED_FOR
透明代理代理IP地址代理IP地址真实IP地址
匿名代理代理IP地址代理IP地址代理IP地址
混淆代理代理IP地址代理IP地址随机IP地址
高匿代理代理IP地址无该字段无该字段

简单来看,如果使用了透明代理,那么服务器明确知道了访问的数据包使用了代理,并且也知道了请求者的真实IP地址。如果使用了匿名代理,那么服务器知道了访问的数据包使用了代理,但是不知道请求者的真实IP地址。如果使用了混淆代理,那么服务器知道访问的数据包使用了代理,但是知道的请求者的真实IP地址是错误的。如果使用了高匿代理,那么攻击者就不知道请求者使用了代理。
如果我们申请了一个代理池的访问接口,那么我们在使用该代理时,应当在requests.get()方法中,设置proxies字段,来指定代理IP和端口。该字段是一个字典变量,字典的键是代理采用的协议,可以是http或https,该键对应的值是代理的IP和端口。例如:

response=requests.get(url,headers,proxies={"https":"X.X.X.X:X"})

这样,Python就会使用代理对指定网页进行爬取了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言进阶——指针(二)

一. 函数指针 说到指针,我们可以想到的是取地址操作符 int ADD(int a,int b) {return ab; } int main() {printf("%p\n", &ADD);return 0; } 如此,我们便可以得到一个地址 而我们便可以将这个地址存入到一个函数指针中 int(*p)(int,…

各种卷积的说明

一、普通卷积 1、多通道输入,单通道输出 输入为三通道的6*6*3,过滤器也是三通道的分别对应RGB三个通道。其中: 过滤器的通道数需要和被卷积目标的通道数保持一致。输出通道数卷积核个数计算过程包含了先卷积再融合的过程。3个通道各种卷积得…

图像处理:二值掩膜影像去噪与边缘强化

前言这篇博客主要解决的一个问题是掩膜图像的噪声去除和边缘强化,如下图1所示。可以看到掩膜图像上有很多的斑点噪声,而且掩膜的轮廓也不够清晰。所以我们的目标就是一方面尽可能把这些斑点噪声去除,另一方面尽量突出掩膜边界。另外处理后的掩…

c#入门-多播委托,匿名函数

多播委托 委托作为变量,也可以和-。委托可以和方法组相加,但方法组和方法组不能相加。 储存多个函数时,调用委托会按照加的顺序依次执行。但返回值只使用最后绑定的函数。 使用 – 时,如果储存了这个值,那么会移除第一…

深圳电子行业的mes系统的需求分析方法~先达智控

深圳电子行业mes系统的需求分析方法导读:如今,制造业的行业竞争越来越激烈,减少产品成本、提高产品质量,缩短开发周期,已成为当前企业生产与发展中的一个重点方向。而对电子行业而言,厂家着重考虑并解决了产…

我们想要赚钱,就要理解赚钱的本质、要素、公式和障碍

想要赚钱,就要先理解赚钱,只有理解了赚钱,才能够赚到钱。赚钱的本质是商业,而商业的本质是交易,那交易的本质又是什么呢?就是价值交换。价值交换,就是我们怎么能与别人达成合作,并且…

朱江明赋予了零跑新的活力

作为今年风云的智能自主化新能源汽车品牌,零跑汽,一度是人们谈论的热点话题。零跑汽车在今年也取得了非常不错的销量,这么一个响当当的品牌在之前其实发展几度遭遇挫折,而正是创始人朱江明几次将零跑汽车起死回生,赋予…

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。官方文档见https://neurora.github.io/documentation/index.html下载pip install neurora表征相似性分析的知识可见:https://zhuanlan.zhih…

QSqlDatabase::drivers()输出为空的解决办法

解决问题&#xff1a;今天项目中需要用到QT连接MYSQL数据库进行数据库访问&#xff0c;使用数据库驱动加载代码&#xff1a; qDebug()<<"数据库驱动&#xff1a;"<<QSqlDatabase::drivers();打印出来的结果居然为空“()”。 尝试解决方案&#xff1a; …

逻辑漏洞渗透与攻防(三)之登录前端验证漏洞

目录 前言 登录前端验证漏洞 忘记密码 给邮箱/手机发验证码 前端验证绕过 设置新密码时改他人密码 ​编辑 某网站密码找回功能 链接的形式-链接token参数可逆 服务端验证逻辑缺陷 登录状态下修改密码等验证条件 参数带用户名等多阶段验证 重置密码 重置后的默认密…

软件产品科技成果鉴定需要提供哪些材料?软件测试费用怎么算?

一、软件产品科技成果鉴定是什么? 软件产品科技成果鉴定是有效评价科技成果质量和水平的方法之一&#xff0c;也是鼓励科技成果通过市场竞争等方式得到有效的评价和认可&#xff0c;可以推动科技成果的进步和转化。软件产品科技成果鉴定测试报告是申报国家、省、市科技成果奖…

SQLite Database Introduction

Use SQLite installed on Linux (CentOS7) to introduce.(You can also use python to install SQLite3 for learning.)•SQLite Preface•Introduction to SQLite Features•SQLite Data Type•SQLite Constraint•SQLite Syntax•SQLite Join•SQLite Database & Table•…

第01讲:ElasticSearch安装

一、什么是ElasticSearch 二、ElasticSearch的安装 Elasticsearch 分为 Linux 和 Windows 版本&#xff0c;基于我们主要学习的是 Elasticsearch 的 Java 客户端的使用&#xff0c;所以课程中使用的是安装较为简便的 Windows 版本。 2.1、Windows系统下安装ElasticSearch W…

KubeSphere 使用 OpenLDAP 进行统一认证完全指南

作者&#xff1a;申红磊&#xff0c;青云QingCloud 容器解决方案架构师&#xff0c;开源项目爱好者&#xff0c;KubeSphere Member。 背景 在实际使用中&#xff0c;会有一些用户&#xff0c;在不同场景中经常碰到 OpenLDAP 对接问题&#xff1a; 能否对接 LDAP&#xff1f;对…

go sync.Map源码分析

概述 go 语言中的map并不是并发安全的,在Go 1.6之前,并发读写map会导致读取到脏数据,在1.6之后则程序直接panic. 因此之前的解决方案一般都是通过引入RWMutex(读写锁)进行处理, 关于go为什么不支持map的原子操作,概况来说,对map原子操作一定程度上降低了只有并发读,或不存在并…

多线程看这一篇文章就够了

第一章 多线程概述 1 2 31. 什么是程序? 2. 什么是进程? 3. 什么是线程?程序1是为完成特定任务、用某种语言编写的一组指令的集合(一段静态的代码)进程1是程序的一次执行过程&#xff0c;或是正在运行的一个程序线程1 2 3进程可进一步细化为线程&#xff0c;是一个程序内部的…

软考网络工程师上午常考点

软考网络工程师上午常考点&#xff1a; **计算机硬件基础&#xff1a;**根据考纲分析&#xff0c;本章主要考查三个模块&#xff1a;计算机体系结构、存储系统、I/O输入输出系统&#xff0c;其中每一模块又分若干知识点。“计算机硬件基础”相当于软考中的“公共基础课”&…

12月更新 | Visual Studio Code Python

我们很高兴地宣布&#xff0c;2022年12月发布的适用于 Visual Studio Code Python 和 Jupyter 扩展现已推出&#xff01;此版本包括以下改进&#xff1a;Pylance 自动缩进 预览&#xff1a;浏览器中运行与调试 Python社区提供新扩展&#xff1a;Ruff如果您有兴趣&#xff0c;可…

C51单片机基础之串口编程实战

目录 一、串口编程寄存器分析 1、PCON : 电源控制寄存器 2、SCON&#xff1a;串行控制寄存器 二、自己实现串口初始化编程 三、发送一串字符串给到PC端编程 四、PC发送指令控制LED编程 五、串口中断实时控制LED编程 1、串口中断的中断号&#xff1a;interrupt4 2、串口…

Apache Doris Join 实现与调优实践|未来源码

推荐语&#xff1a; SQL 的支持力度和粒度&#xff0c;已经作为今天所有大数据计算引擎的重要衡量标准之一&#xff0c;而 SQL 的所有操作&#xff0c;可以分为简单操作&#xff08;如 where、limit等 filter 操作&#xff09;和复杂操作&#xff08;groupby、join 等聚合操作&…