千家信息网

如何用R语言撸了一个简易代理

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关如何用R语言撸了一个简易代理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。最近正在刻苦的学习爬虫,陆陆续续的学习了正则表达
千家信息网最后更新 2026年11月01日如何用R语言撸了一个简易代理

今天就跟大家聊聊有关如何用R语言撸了一个简易代理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

最近正在刻苦的学习爬虫,陆陆续续的学习了正则表达式、xpath、css表达式,基本可以胜任R语言中的RCurl+XML、httr+rvest组合爬虫的需求,对GET请求和POST请求的构造和表单提交以及浏览器抓包、模拟登陆、异步加载也做了一些梳理,因为爬虫知识的通用性,所以在入门Python阶段直接就开始练习urllib+lxml、requests+BeautifulSoup。

爬虫的入门也算有了一点儿小小的心得,下一步计划在不断练习巩固现有知识的同时、对服务器的反反爬进行探索,这里涉及到如何使用随机agent、如何构造匿名代理IP以及如何使用多进程,要走的路还有很长。

之前一直有计划去爬豆瓣热门影视剧短评,试过好几次,豆瓣短评页是需要登陆后查看的,而且热门影视剧的短评通常都不会少于10000+页,这样频次的请求稍有不慎就会被封ip,所以一直在研究如何友好、温和的解决这个问题。

前几天看到Python爱好者社区的大婶们用Python写了代理池的代码,就想着用R语言也撸一个,那个代码提供了多进程检测代理IP有效性的方案,可是我对R语言的多进程还了解不够,只能用笨办法一点儿一点儿检测,很耗时,虽然笨一点,但是最后也算运行成功了。

爬取IP代理偷偷给文章刷阅读量

爬的目标网址是国内的西刺高匿代理,很早就听大佬们说免费的代理没有好货,因为匿名代理很多有时限,在加上首页的可能很多开发者都在用,所以即便你爬再多,可用的也有限。我一共爬了前6页,用RCul+XML结合,以百度搜索首页为目标网址,简单筛选了一下,600个ip只筛了13个可用的~_~。

不过话又说回来了,西刺一共有2000+页代理ip,一共加起来差不多20万+个代理,如果你不嫌麻烦,可以慢慢搞一遍,不过要友好一点儿!想要好用的,据说有钱能使磨推鬼!

以下是我个人使用R语言仿照上面那篇文章的思路写的一个简易IP代理抓取与检测代码。

加载扩展包:

library("RCurl")  library("XML") library("dplyr")

获取可用User-Agent

#在这个网页上找到了一些可用的user-agent:
GetUserAgent<-function(){ url<-"http://www.atool.org/useragent.php" content<-url %>% getURL(encoding='utf-8') %>% htmlParse() UserAgent<-content %>% xpathSApply("//ul[@class='new_tools_list']/li[@class='green']",xmlValue) %>% .[1:(length(.)-1)] return(UserAgent)}
###获取UA(user-agent)
myuseragent<-GetUserAgent()
#生成随机UA
RandomUA<-function() sample(myuseragent,1,replace=TRUE)RandomUA()

爬取代理列表:

getProxies<-function(){  init_proxies=c()
for (i in 1:6){ print("####") print(paste0("####爬取第",i,"页####")) print("####") print("IP地址\t\t\t端口\t存活时间\t\t验证时间") url <- paste0("http://www.xicidaili.com/nn/",i) headers <- c("User-Agent"=RandomUA())
#设置错误记录 d <- debugGatherer()
#构造curl句柄收集登录信息,开启cookiefile管理器: chandle <- getCurlHandle(debugfunction=d$update,followlocation=TRUE,cookiefile="",verbose = TRUE) result = tryCatch({ content <- url %>% getURL(curl=chandle,httpheader=headers,.encoding='utf-8') }, error = function(e) { cat("ERROR :",conditionMessage(e),"\n") }) myproxy <- content %>% htmlParse() #提取IP地址、端口、存活时间、验证时间 ip_addrs <- myproxy %>% xpathSApply('//tr/td[2]',xmlValue) #IP地址 port <- myproxy %>% xpathSApply('//tr/td[3]',xmlValue) #端口 sur_time <- myproxy %>% xpathSApply('//tr/td[9]',xmlValue) #存活时间 ver_time <- myproxy %>% xpathSApply('//tr/td[10]',xmlValue) #验证时间 for (j in 1:length(ip_addrs)){ ip <- paste0(ip_addrs[j],":",port[j]) init_proxies <- c(init_proxies,ip)
#输出ip print(paste0(ip_addrs[j],"\t\t",port[j],"\t\t",sur_time[j],"\t",ver_time[j])) } } return (init_proxies)}

###获取代理IP:
myproxies<-getProxies()

检验代理IP是否有效:

testProxy <- function(myproxies){  tmp_proxies = c()  tarURL <- "https://www.baidu.com/"   headers <- c("User-Agent"=RandomUA())  d <- debugGatherer()  for (ip in myproxies) {
#构造curl句柄收集登录信息,开启cookiefile管理器: chandle <- getCurlHandle(debugfunction=d$update,followlocation=TRUE,cookiefile="",proxy=ip,verbose = TRUE) Error <- try(tarURL %>% getURL(curl=chandle,httpheader=headers,.opts=list(maxredirs=2,ssl.verifypeer=FALSE,verbose=TRUE,timeout=5)),silent=TRUE)
if(!'try-error' %in% class(Error)){ tmp_proxies<-c(tmp_proxies,ip) } else {
next } Sys.sleep(sample(1:2,1,replace=TRUE)) }
return(tmp_proxies)}###返回有效代理:UsefulProxy <- sapply(myproxies,testProxy) %>% unlist %>% na.omit() %>% unname()

600个ip,只筛选除了寥寥无几的13个,痛哭流涕!!!

看完上述内容,你们对如何用R语言撸了一个简易代理有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

代理 语言 时间 爬虫 简易 有效 代码 内容 地址 知识 短评 端口 进程 检测 验证 热门 信息 句柄 影视 影视剧 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 互联网金融监管科技数据 互联网 科技创新 智网互联网科技 万达互联网科技 大白互联网科技 四个字互联网科技公司取名 互联网科技股午盘股票涨跌 成都仁贤领冠互联网科技有限公司 华脉科技工业互联网产品 济南和联互联网科技有限公司 剑昆互联网络科技有限公司临桂 互联网校园科技培训 赶超互联网科技 微信多开 健康食品互联网创新科技园项目 互联网科技包装股份有限公司上市 互联网硬科技公司 张家口科技产业互联网平台 科技互联网经济论坛 三亚科技创新互联网基地 互联网通讯科技 极限挑战互联网科技 居家互联网科技有限公司 丰台科技园 互联网公司 玉溪互联网科技怎么选 华夏恒生科技与互联网科技 浙南科技城互联网大厦招聘 上海互联网科技公司ppt 科技互联网行业投资研究 中国互联网公司的科技投入
0