91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用R語言擼了一個簡易代理

發布時間:2021-11-22 09:40:32 來源:億速云 閱讀:154 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何用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()

如何用R語言擼了一個簡易代理

600個ip,只篩選除了寥寥無幾的13個,痛哭流涕!!!

看完上述內容,你們對如何用R語言擼了一個簡易代理有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗山县| 小金县| 怀远县| 玉树县| 方山县| 寿阳县| 喀喇沁旗| 孙吴县| 天水市| 平陆县| 岳阳市| 尚志市| 平顺县| 浏阳市| 蒙自县| 乌海市| 磐石市| 大田县| 当阳市| 台江县| 科技| 肇州县| 宣化县| 绩溪县| 赣榆县| 额济纳旗| 临泉县| 津南区| 禄丰县| 许昌县| 岱山县| 五原县| 华宁县| 克山县| 石嘴山市| 海丰县| 二连浩特市| 黎平县| 东港市| 新密市| 威信县|