业界动态
烦死了!爬虫时又被封了!手把手教你自建免费代理池
2024-12-30 03:01

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入


上次给大家分享了怎么用爬虫批量的下载插画网站 P 站的图片终于,我用爬虫批量保存了P站的靓图后面讲到了反爬措施。第 1 种反爬措施是加随机等待时间,第 2 种是加入随机的 UserAgent,上次漏讲了一点,有一个可以用来生成随机 UserAgent 的第三方库,不用我们自己从网上去复制粘贴 UserAgent。


第 3 个反爬措施是今天要给大家分享的自建代理IP池。网上有很多免费的代理 IP,但是这些免费的代理 IP 可用率都不高,因为可能这一个 IP 很多人同时在用,这样就会导致这个 IP 的存活时间很短。但是,毕竟如果我们只是偶尔的用一下爬虫,去买付费的代理 IP 的话也不是很划算,所以今天的分享呢,是教大家怎么利用好这些免费的 IP 来创建自己的代理 IP 池。

 

今天跟大家分享的代理池分为两种。一种是创建国内的代理 IP 池,主要用来爬取国内的一些网站。另一种是含有国外的代理 IP,比如我上次爬取的插画网站 pixiv,它是需要用到国外 IP 的。

建立代理 IP 池的步骤无非就两步。

从目标网站提取我们需要的代理 IP 和端口信息。

我们用特定的网站来检测这个代理 IP 是否可用,可用的话就保存起来,不可用的话就继续检测下一个,如此循环。那刚才说的国内和国外的两种代理池的主要代码都是一样的,区别的地方就是爬取代理 IP 的网站不一样而已。导致我们从页面提取 IP 的代码就略有不同。

那我们就以爬取国内免费代理 IP 为例。国外代理 IP 我只讲提取 IP 的那一部分代码。首先,我们找到免费代理 IP 的目标网站。

 

我们先把几个变量初始化下,测试 IP 是否可用的 url、获取 IP 的 url、User-Agent 信息和保存 IP 的 txt 文件信息。

 

 

然后我们通过分析代理 IP 的目标网站来提取 IP 和端口,一般是把网页信息转换成 lxml 或者 XML 格式,然后用 xpath 或者正则表达式来提取信息,这次我用的是 etree.HTML() 用来解析字符串格式的 HTML 文档对象,然后用 xpath 提取信息。

 


页面有分页,我们加一个 for 循环就可以控制我们提取的页码。

 

然后接下来是把这个代理 IP 拼接下,去请求检测网站来检查这个 IP 是否可用,检测国内的 IP 我用到的是 httpbin 网站,httpbin 是一个使用 Python Flask 框架编写的 HTTP Request 和 Response 服务。该服务主要用于测试 HTTP 库。你可以向他发送请求,然后他会按照指定的规则将你的请求返回。

我们来测试下 httbin,直接请求的话,我们看下打印的信息。

 

返回的 origin 就是你的 IP。

 

 

如果这个 IP 一直频繁请求一个网站的话,可能就会被封禁了,用一个可用 IP 访问 httpbin。如果返回码是 200 那就是成功的,所以我们爬取的同时判断下返回码,如果是 200 就表示这个代理 IP 是可用的,否则这个 IP 就不可用。

 


所以建代理池就这些步骤。那我们来爬取国内免费 IP 看一下,我这次爬取的是前 150 页,输出控制台里看到,前 150 页共有 800 多个 IP 但只有 29 个是可用的,可用率很低。

 

这些可用的也直接保存在了我指定的 txt 文件里,下次获取的话直接从这个文件里获取。

 

那下面来说说创建国外的代理 IP 池,我找了一个含有国外代理 IP 的网站。

 

 

同样的方法,分析一下这个页面,这次我用了正则表达式来提取,它的 IP 和端口很轻松就被提取出来了。

 


因为这次是用来爬取插画网站 pixiv,所以这次的检测网站就换成了pixiv。其他的步骤几乎一模一样。运行代码结束后,我查看了一下,共爬取 800 多个 IP 但只有 3 个是可用的,这个可用率也是非常低了,那如果你想继续追加保存 IP 的话,你也可以修改那个循环来控制爬取的页面,或者你换一个其他的代理 IP 网站,提取 IP 的代码稍加修改下,就可以把代理 IP 提取出来,往 txt 文件里面继续追加。

现在对上次的代码优化下,每次请求时随机使用代理 ip 池里的 ip,我们先写一个读取 txt 文件信息的方法,这个方法把 IP 信息读取后保存为列表,并随机返回列表里的一个 IP,再以字典形式返回。

 

 

请求参数里带上上面返回的代理 ip,再用 try 捕捉下异常就可以开始爬取了。

上次爬取的是今日的插画,这次用代理池就不爬今日的了,这次爬取本周、本月、新人模式的,这个在参数里改下 mode 的值就行。

 

 

 

你也可以把今日、本周、本月、新人模式的值放在列表里,你再用一个循环就搞定。

 

目前每个模式最多 500 张图片,全部爬取完也就 2000 张图片,也不多,所以代理池里的 ip 少也没事,基本也能爬完,如果你爬取的图片多,比如你还要爬取上月、上上月的图片,那就要更多的代理 ip 放到你的代理池了,上面捕鱼的办法无私分享给大家了。

最后,本次分享的免费代理池不适合用来做大的爬虫项目的,大的爬虫项目爬取量比较大,这些免费的代理 IP 显然是不够稳定和不够用的,这就需要你自己去购买付费的了,付费的就没有什么技巧可言了,唯一的技巧就是花钱。所以大家根据自己的需求来决定了。这些反爬措施搞定之后,轻松爬虫就不是难事了,这时候可能我们需要考虑的是怎么让爬虫速度变得更快。这时我们就需要用到异步爬虫和分布式爬虫了,对异步爬虫和分布式爬虫比较感兴趣的,可以在评论区留言,如果对这部分感兴趣比较多的话,下次就单独发文章详细分享一下怎么实现异步爬虫和分布式爬虫。

    以上就是本篇文章【烦死了!爬虫时又被封了!手把手教你自建免费代理池】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/13041.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
盘点2024西安荣耀时刻!“西”引力爆表!
从传统文化的深厚积淀到旅游行业的蓬勃发展从非遗艺术的薪火相传到现代潮流的创新融合……今天,和文旅君一起回顾2024年古都西安
惠山街道2024年工作总结和2025年工作思路
2024年工作回顾2024年惠山街道始终坚持以习近平新时代中国特色社会主义思想为指导,认真落实区委、区政府决策部署,坚持稳中求进
天气|明日“小寒”!最冷“三九”就要来!
今日天气实况今日迎来2025年的首个双休日天气状况还不错天空晴朗,阳光温暖,风力微弱15时全市各区气温在7℃左右明天迎来小寒节
枝江市2025年“十大民生项目”公布!
枝江市第七届人民代表大会第五次会议于2025年1月10日票决产生了枝江市2025年度重大民生实事项目一起来看看↓↓↓一、枝江市枫杨
原来是这样 | 又上热搜!最近很火的“煮苹果水”,到底怎么喝更有用?
鄠邑区是中国科协命名的“全国科普示范区”,为进一步弘扬科学精神、普及科学知识、传播科学思想,鄠邑区科学技术协会联合鄠邑区
惊掉下巴!他俩在一起了???
新发色迎新年 2025鸿运当头拉满仪式感从头开始换个气场NOUGAT ,欧美名媛凯特王妃最爱的纯有机老牌洗护自然原生植萃护不伤头皮、
第一批鸡娃英语的妈妈,都后悔了……
虽然科大大同事们都说不卷,但又悄咪咪卷(啪啪打脸中…)的家长,2年级用上倾听者不算晚!说真的,有了它,吼孩子都少了!产品
发改委:推进户用光伏发展,助力农民拓宽增收新路径
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
泉州百度爱采购运营介绍
百度爱采购入驻条件有哪些:商家需持有工商行政管理局颁发的营业执照,并且执照在6个月有效期内;厂家商品真实在营且符合国家相
抖音feed是什么 feed广告投放流程
feed是什么?feed流(又称信息流)它是穿插在App内容中的广告,具有原生沉浸式体验,支持多种展现形式。feed可以进行线索收集,