Python爬虫--用户代理IP池

news/2024/10/21 10:16:51/

前面一篇讲了用户 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.ppmy.cn/news/1442233.html

相关文章

go 安装软件报go.mod file not found

执行 go get -u github.com/go-sql-driver/mysql 下载mysql 报错 解决方法: 控制台&#xff1a;输入go env 返回如下&#xff1a; 红圈值为NUL&#xff0c;需要设置GOMOD的值, 然后再控制台执行 &#xff08;1&#xff09;mkdir mod (2)go mod init mod 然后再执行下载&…

【C语言】编译与链接

1.翻译环境与运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 1.翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令&#xff08;二进制指令&#xff09; 2.执行环境&#xff0c;它用于实际执行代码 2.翻译环境 那么翻译环境是怎么将源代码…

论文解读:(UPL)Unsupervised Prompt Learning for Vision-Language Models

文章汇总 存在的问题 之前的来自目标数据集的标记数据(有监督学习)可能会限制可伸缩性。 动机 通过无监督提示学习(UPL)方法&#xff0c;以避免提示工程&#xff0c;同时提高类clip视觉语言模型的迁移性能。 方法解读 主张top-k而不是top-p 注&#xff1a;top-k是指挑选…

深入探索 Apache Flink:流式处理框架的奥秘

在大数据与实时分析的时代&#xff0c;流式处理框架已经变得至关重要。Apache Flink 作为其中的佼佼者&#xff0c;以其独特的架构和强大的功能&#xff0c;吸引了全球范围内的开发者与数据科学家的目光。本文将详细剖析 Flink 的核心特性、应用场景、最佳实践&#xff0c;并展…

线程间为什么要枷锁?

首先&#xff0c;在多线程编程中&#xff0c;通常可以将线程中的和数据和资源分为私有的和共享的两类&#xff0c;一类是私有的&#xff0c;还有一类是共享的。 私有主要包括&#xff1a; 线程栈&#xff1a;每个线程都有自己的线程栈&#xff0c;用于存储局部变量、函数调用…

怎么才能让数字在横线上缩小了数字还在横线上

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>刻度</title> </head> <style typ…

机器学习作业3____决策树(CART算法)

目录 一、简介 二、具体步骤 样例&#xff1a; 三、代码 四、结果 五、问题与解决 一、简介 CART&#xff08;Classification and Regression Trees&#xff09;是一种常用的决策树算法&#xff0c;可用于分类和回归任务。这个算法由Breiman等人于1984年提出&#xff0c;它…

【python】简单实现遍历文件夹和子文件夹重命名

个人简介 &#x1f468;&#x1f3fb;‍&#x1f4bb;个人主页&#xff1a;九黎aj &#x1f3c3;&#x1f3fb;‍♂️幸福源自奋斗,平凡造就不凡 &#x1f31f;如果文章对你有用&#xff0c;麻烦关注点赞收藏走一波&#xff0c;感谢支持&#xff01; &#x1f331;欢迎订阅我的…