Python爬虫--用户代理IP池

前面一篇讲了用户 UA 代理池,现在这篇来讲下 IP 代理,

相对于 UA 来说,IP 更容易被封,

这里讲两种方法。


方法一:本地ip池

方法一 就是将 IP 拿下来本地,然后通过随机选取或者其他来调用

这就跟之前使用 UA 差不多,只不过函数不同

这里使用 urllib.request.ProxyHandler() 方法

ProxyHandler() 函数是 来设置使用代理服务器

废话不多说,先来简单的看看


import urllib.request
import randomip_pool = ["192.168.0.1","192.168.0.2","192.168.0.3","192.168.0.4","192.168.0.5"]def IP(ip_pool):this_ip = random.choice(ip_pool)  #  随机选取一个proxy = urllib.request.ProxyHandler({"http":ip})opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)urllib.request.install_opener(opener)# if __name__ == '__main__':
# 	ua(ip_pool)

这样就封装好了一个函数


我们再拿 糗事百科 来举例吧

这次加一个 try except 来捕获异常


import urllib.request
import randomip_pool = ["192.168.0.1","192.168.0.2","192.168.0.3","192.168.0.4","192.168.0.5"]def IP(ip_pool):this_ip = random.choice(ip_pool)  #  随机选取一个proxy = urllib.request.ProxyHandler({"http":this_ip})opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)urllib.request.install_opener(opener)for i in range(1,5):try:IP(ip_pool)this_url = "https://www.qiushibaike.com/text/page/"+str(i)+"/"data = urllib.request.urlopen(this_url).read().decode("utf-8","ignore")path = '<div class="content">.*?<span>(.*?)</span>.*?</div>'resut = re.compile(path,re.S).findall(data)for j in resut:print(j)time.sleep(0.5)except Exception as error:print(error)

这样就可以了,即使那个 ip 访问不了,也不会影响到程序的执行


方法二:IP接口

第二种方法就是调用 IP 接口了

有些网站提供 ip 池,然后只需要调用他那个接口就行了

这里简单提一下,可能不同网站调用方法不同


import urllib.request
import randomdef IP(ip_pool):this_ip = urllib.request.urlopen("http://www.xxx.com/?xxx=xxx")  #  调用接口提取 ipproxy = urllib.request.ProxyHandle({"http":this_ip})opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)urllib.request.install_opener(opener)for i in range(1,5):try:IP(ip_pool)this_url = "https://www.qiushibaike.com/text/page/"+str(i)+"/"data = urllib.request.urlopen(this_url).read().decode("utf-8","ignore")path = '<div class="content">.*?<span>(.*?)</span>.*?</div>'resut = re.compile(path,re.S).findall(data)for j in resut:print(j)time.sleep(0.5)except Exception as error:print(error)

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

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

相关文章

怎么通过PHP语言实现远程控制棋牌室

怎么通过PHP语言实现远程控制棋牌室呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制棋牌室&#xff0c;通过专用的包间控制器&#xff0c;来实现包间内所有电器以及门锁的独立控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规…

洗鞋店上门预约小程序

洗鞋上门预约小程序&#xff0c;一款针对洗鞋行业的移动应用&#xff0c;让你轻松享受洗鞋的便捷服务。只需一键预约&#xff0c;多种洗鞋选项任你选&#xff0c;满足你的个性化需求。简洁明了的操作界面&#xff0c;让你快速下单&#xff0c;享受高效的洗鞋体验。 该系统凭借…

BetterDisplay Pro for Mac:显示器校准软件

BetterDisplay Pro for Mac是一款出色的显示器校准软件&#xff0c;旨在提升你的视觉体验。它提供了准确的显示器参数调整&#xff0c;包括亮度、对比度、色温和色域等&#xff0c;让你的显示器呈现更真实、清晰、细腻的图像。此外&#xff0c;软件还提供多种预设模式和自定义选…

遥感雷达波段的原理及应用

雷达波段是不同波长的组。每一种都有其独特的穿透地球表面的能力。它们还可以揭示环境的不同方面。 雷达频段在电磁频谱内具有特定的频率范围。这些波段由 L-、S-、C- 和 X-波段等字母表示。稍后会详细介绍这一点。 什么是合成孔径雷达&#xff1f; 合成孔径雷达 (SAR) 是一…

后台图书管理系统:SSM整合开发案例

代码已经完善,文章内容会在后续补充 代码地址(https://javazhang.lanzn.com/ig8tf1wd2aba 密码:1234) 1.1 .SpringConfig 代码 Configuration ComponentScan({"com.itheima.service" }) PropertySource("classpath:jdbc.properties") Import({JdbcConfig…

Types of infrastructures in the management of stakeholder relationships

Types of infrastructures in the management of stakeholder relationships are follows: Legal infrastructure Contractual infrastructure Organizational infrastructure Governmental infrastructure

【STM32+HAL】读取电池电量

一、准备工作 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置&#xff0c;详见【STM32HAL】ADC采集波形实现 有关软件触发ADC模式配置&#xff0c;详见【STM32HAL】三轴按键PS2摇杆 二、所用工具…

深入理解MySQL事务管理

事务是数据库操作中的基本概念&#xff0c;它确保了数据库的一致性和完整性。MySQL作为一种流行的关系型数据库管理系统&#xff0c;提供了强大的事务支持。本文将详细介绍MySQL事务的概念、特性、使用方法以及常见的实践技巧。 1. 什么是事务&#xff1f; 在数据库中&#x…

如何替代传统的方式,提高能源企业敏感文件传输的安全性?

能源行业是一个关键的基础设施领域&#xff0c;它涉及能源的勘探、开采、生产、转换、分配和消费。随着全球经济的发展和人口的增长&#xff0c;能源需求持续上升&#xff0c;这对能源行业的可持续发展提出了挑战。能源行业的传输场景多种多样&#xff0c;需要重点关注能源企业…

NDK 基础(四)—— C++ 高级特性1

1、STL 容器 STL&#xff08;Standard Template Library&#xff09;译为标准模板库&#xff0c;它是一套强大的标准库&#xff0c;是 C 标准库的一部分&#xff0c;在 iostream 中。STL 提供了包括容器在内的许多常用的数据结构和算法&#xff0c;以及用于操作这些数据结构的…

【热门话题】Chrome 插件研发详解:从入门到实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Chrome 插件研发详解&#xff1a;从入门到实践一、引言二、Chrome 插件基础概念…

【DevOps入门到精通】导读:探索软件开发与运维的协同之道

目录 DevOps简介 专栏结构概览 第一部分&#xff1a;入门阶段 DevOps概述 核心实践 工具与环境 第二部分&#xff1a;提高阶段 深入CI/CD 自动化测试进阶 监控与日志 第三部分&#xff1a;精通阶段 容器化与微服务架构 DevSecOps 高级监控与优化 第四部分&#…

应用实战 | 别踩白块小游戏,邀请大家来PK挑战~

“踩白块会输”是一个简单的微信小程序游戏&#xff0c;灵感来自当年火热的别踩白块游戏&#xff0c;程序内分成三个模块&#xff1a;手残模式、经典模式和极速模式&#xff0c;分别对应由易到难的三种玩法&#xff0c;可以查看游戏排名。动画效果采用JS实现&#xff0c;小程序…

多线程事务怎么回滚

1、背景介绍 1&#xff0c;最近有一个大数据量插入的操作入库的业务场景&#xff0c;需要先做一些其他修改操作&#xff0c;然后在执行插入操作&#xff0c;由于插入数据可能会很多&#xff0c;用到多线程去拆分数据并行处理来提高响应时间&#xff0c;如果有一个线程执行失败…

Git重修系列 ------ Git的使用和常用命令总结

一、Git的安装和配置 git安装&#xff1a; Git - Downloads git首次配置用户信息&#xff1a; $ git config --global user.name "kequan" $ git config --global user.email kequanchanqq.com $ git config --global credential store 配置 Git 以使用本地存储机…

mysql主库delete一个没主键的表导致从库延迟很久问题处理

一 问题描述 发现线上环境一个从库出现延迟&#xff0c;延迟了2天了&#xff0c;还没追上主库。 查看当前运行的sql及事务&#xff0c;发现这个sql语句是在delete一个没主键的表。 二 问题模拟 这里在测试环境复现下这个问题。 2.1 在主库造数据 use baidd; CREATE TABL…

【数据库】Redis

文章目录 [toc]Redis终端操作进入Redis终端Redis服务测试切换仓库 String命令存储字符串普通存储设置存储过期时间批量存储 查询字符串查询单条批量查询 Key命令查询key查询所有根据key首字母查询判断key是否存在查询指定的key对应的value的类型 删除键值对 Hash命令存储hash查…

软件测试_v模型_w模型

v模型&#xff1a; w模型&#xff1a; 一、V模型的8个阶段及其对应关系如下&#xff1a; 1. 需求分析&#xff1a;明确项目的需求&#xff0c;为后续设计提供依据。 2. 总体设计&#xff1a;根据需求分析&#xff0c;设计系统的总体架构。 3. 详细设计&#xff1a;在总体设计的…

在no branch上commit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录&#xff0c;这里的第二条提交&#xff08;fbd3ea8&#xff09;就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8&#xff0c;恢复到上次提交的状态&#xff0c;并且为其创建个分支backup&#xff0c;此时…

(七)Servlet教程——Idea编辑器集成Tomcat

1. 点击桌面上Idea快捷方式打开Idea编辑器&#xff0c;假如没有创建项目的话打开Idea编辑器后的界面展示如下图所示 2. 点击界面左侧菜单中的自定义 3. 然后点击界面中的“所有设置...”,然后点击“构建、执行、部署”&#xff0c;选择其中的“应用程序服务器” 4. 点击“”按钮…