织梦CMS - 轻松建站从此开始!

欧博ABG-会员登录-网站

代理IP爬取和验证(快代理&西刺代理)

时间:2024-10-31 21:10来源: 作者:admin 点击: 13 次
前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点: 免费,不稳定 (至于为什么要爬不稳定的免费的代理,你心里难道没点B+树么,高富帅谁 过来学

仅仅伪装网页agent是不够的,欧博官网你还需要一点新东西

今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳定(至于为什么要爬不稳定的免费的代理,欧博你心里难道没点B+树么,高富帅谁** 过来学爬虫,还爬代理,人家直接买好么~)

目标

给出目标网站,欧博娱乐盘它

快代理

代码详情

import ChangIp.GetAgent import org.jsoup.Jsoup import org.jsoup.nodes.Document import scala.collection.mutable.ArrayBuffer import scala.util.{Failure, Random, Success, Try} import scala.collection.JavaConverters._ /** * @Author ******* * @Create 2019-01-23 11:59 * @Descripation: * * */ object IP_CollectTest { //抓取快代理前10页的ip def requestGetUrl(times:Int=20)(url:String,tag:String,arr_all:ArrayBuffer[String]): Unit ={ //设置随机间隔时间 var delay:Long=500 delay = (1000+(new Random).nextInt(4000)).toLong //开始抓取 //GetAgent.get_agent()方法--见上一篇,很简单,自己加一下就行 Try(Jsoup.connect(url+tag).userAgent(GetAgent.get_agent()).get())match { case Failure(e) =>{ if(times!=0){ println(e.getMessage) //抓取失败重试 Thread.sleep(delay) requestGetUrl(times-1)(url,tag,arr_all) }else throw e } case Success(doc) => // 解析网页传入参数,doc和保存数据的数组 val count = parseDoc(doc,arr_all) if (count==0){ //抓取失败重试 Thread.sleep(delay) if(times>=0){ requestGetUrl(times-1)(url,tag,arr_all) } else { println(tag+"scrape data failed...,Please comfirm this word again") } } } } //网页解析 def parseDoc(doc:Document,arr_all:ArrayBuffer[String]): Int ={ // 用count判断是否有返回数据 var count = 0 val links = doc.select("tr") for(link<-links.asScala){ // 爬取IP val ip = link.select("td").select("[data-title=IP]").text() // 爬取port val port = link.select("td").select("[data-title=PORT]").text() // 拼成字符串并保存 if(!ip.isEmpty && !port.isEmpty){ val res = ip+":"+port println(res) arr_all.append(res) // 有返回数据则count+1 count+=1 } } count } def use : ArrayBuffer[String] ={ // 用一个array数组保存结果 val arr_all = ArrayBuffer[String]() //遍历前10页 for(i<-Range(1,11)){ val url = "https://www.kuaidaili.com/free/inha/" // 传入三个参数(地址,欧博allbet页数,数组) requestGetUrl()(url,i.toString,arr_all) } //返回保存爬取数据的数组 arr_all } def main(args: Array[String]): Unit = { use } }

结果展示

西刺代理

这里我们只放一下网页解析的代码,其他的跟上面一样

代码详情

bject XiCi_IPCollect { def main(args: Array[String]): Unit = { // 爬取的网址 val url = "https://www.xicidaili.com/nn/1" // 加上TryCatch框架 Try(Jsoup.connect(url).get())match { case Failure(e) => // 打印异常信息 println(e.getMessage) case Success(doc:Document) => // 解析正常则返回Document,然后提取Document内所需信息 val links = doc.select("table#ip_list").select("tr") for(link<-links.asScala){ val txt = link.text() val ip = txt.split(" ")(0) val port = txt.split(" ")(1) if(ip.contains(".")){ println(ip+":"+port) } } } } }

结果展示

代理验证

因为这些免费IP不稳定的原因,其实这些IP里有很大一部分是不能用的,所以需要我们来提取能用的IP,以节省后续爬虫的时间

验证IP是否可用其实非常简单,就是在header里加入要查询的IP,然后访问一下网站,如果成功,那么代表IP可用

def is_pass(arr_all:ArrayBuffer[String]): ArrayBuffer[String] = { //arr_all 数组里保存这上面我们爬取的代理IP val arr_pass = ArrayBuffer[String]() for (i <- arr_all) { try{ //proxy(ip,port)这个函数添加ip进header val response = Jsoup.connect("http://www.baidu.com").proxy(i.split(":").head.trim,i.split(":").last.trim.toInt).userAgent(agent).execute() //网站返回码不是200就可以,这方面有兴趣可以自己google一下 if(response.statusCode()!=200){ println("Bad proxy: "+i) } else { arr_pass.append(i) println("Success proxy: "+i) } } catch{ case e => println(e) } } arr_pass }

或者不用简单直接一点

//验证ip是否可用 def is_pass(arr_all:ArrayBuffer[String]): ArrayBuffer[String] ={ val arr_pass = ArrayBuffer[String]() for(i<-arr_all){ Try(Jsoup.connect(URL_pas).proxy(i.split(":").head.trim,i.split(":").last.trim.toInt).userAgent(agent).get())match { case Failure(e)=> println(e) //如果没有异常,直接添加 case Success(doc:Document)=> // println(i) arr_pass.append(i) } } arr_pass } 结尾唠叨两句

如果你对我的文章感兴趣,欢迎你点开我下一篇文章,后面我将手把手带你一起完成一个个小case,对了如果你也有好的想法,欢迎沟通交流
今天主要是分享了一下IP代理获取的小方法,有兴趣的同学还可以自己添加定时的功能,每天更新IP。

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2024-12-22 11:12 最后登录:2024-12-22 11:12
栏目列表
推荐内容
  • Win10系统配置http、socks5代理ip教程

    文章浏览阅读5k次,点赞18次,收藏14次。本文详细指导了如何在Windows10的32/64位系统中配置HTTP和Socks5代理,包括手动设置步骤、IP和端...

  • 浏览器代理插件:SwitchyOmega

    米扑博客, 专注于IT技术与量化金融, 用技术创造人生财富。...

  • 动静态IP代理服务商【在线免费试用】

    天启HTTP专注企业级优质高匿IP代理服务,提供https代理、Socks5代理、动静态代理、爬虫代理等国内外IP代理服务器,在线网页或软件app代理IP方便快...

  • 浩欧博:9月12日获融资买入65.77万元,占当日流入资金比例28.37%

    同花顺数据中心显示,浩欧博9月12日获融资买入65.77万元,占当日买入金额的28.37%,当前融资余额2237.97万元,占流通市值的1.51%,低于历史20...

  • CroxyProxy 免费网页代理

    CroxyProxy免费Web代理 Croxyproxy是一种安全的web代理服务,欧博允许您浏览具有更高隐私级别的各种网站。您可以使用安全连接访问Facebo...

  • 《民法典》第七章 代理

    第七章 代理第一节 一般规定第一百六十一条 民事主体可以通过代理人实施民事法律行为。依照法律规定、当事人约定或者民事法律行为的性质,应当由本人亲自实施的民事法律...

  • v2rayng 分应用代理完全指南

    本文详细介绍了如何使用v2rayng软件进行分应用代理的设置和使用方法,包括软件下载、配置教程、常见问题解答等内容,帮助读者更好地了解和使用v2rayng进行分...

  • 青龙面板教程(五):代理设置

    文章浏览阅读1.7w次,点赞8次,收藏39次。本文介绍了如何在青龙面板中为Python和JavaScript脚本设置代理,以解决公网服务器上IP限制的问题。对于...

  • operaaudio

    M99 plus Integrate Tube Amplifier The fifth anniversary model, with vol...

  • 《一梦江湖》官方网站-春季特典「江湖万象」正式开启!

    春季资料片「江湖万象」正式来袭!三大场景地图全面更新,探索就有机会获得绑元、挂件、耳饰外观等专属奖励!5月10日,万道皆侠,玩你想的任何玩法即可拿齐奖励!全新巫...