2017-05-11 21 views
0

私は確認が必要なURLSの.csvファイルを持っています。リストの有効性を確認するGETを使用してURLを確認する

私はhttrのGETをデータフレームのすべての行に適用したいと考えています。

> websites 
      website 
1 www.msn.com 
2 www.wazl.com 
3 www.amazon.com 
4 www.rifapro.com 

私は同様の質問を見つけて、回答を適用しようとしました。しかし働いていない。

> apply(websites, 1, transform, result=GET(websites$website)) 


    Error: length(url) == 1 is not TRUE 


> apply(websites, websites[,1], GET()) 
Error in handle_url(handle, url, ...) : 
    Must specify at least one of url or handle 

私は何が間違っているのか分かりません。

答えて

1

あなたは

websites <- read.table(header=T, text="website 
1 www.msn.com 
2 www.wazl.com 
3 www.amazon.com 
4 www.rifapro.com") 
library(httr) 
urls <- paste0(ifelse(grepl("^https?://", websites$website, ig=T), "", "http://"), 
      websites$website) 
lst <- lapply(unique(tolower(urls)), function(url) try(HEAD(url), silent = T)) 
names(lst) <- urls 
sapply(lst, function(x) if (inherits(x, "try-error")) -999 else status_code(x)) 
# http://www.msn.com http://www.wazl.com http://www.amazon.com http://www.rifapro.com 
#    200     -999     405     -999 

GET要求私見は必要ないような何かを行うことができます。

+0

はあなたの迅速な助けをいただき、ありがとうございます。私はここで提供されたデータセットに取り組んでいますが、私が持っているより大きなものではありません。それはすべてに-999を与えていますが、いくつかは有効です – Rifa1234

+0

@ Rifa1234あなたはインターネットに接続していますか? – lukeA

+0

@ Rifa1234それ以外:例: 'lst [1:3]'のエラーメッセージは、何が問題なのかのヒントを与えるべきです。私の推測:URLが不正です。 – lukeA

0

@LukeAは私に答えを与えました。私はちょうどリストではなくデータフレームを生成するために以下に変更しました。上記のコードを精製した後、あなたにLukeA

urls <- paste0(ifelse(grepl("^https?://", websitm$WEBSITE, ig=T), "", "http://"), 
    websitm$WEBSITE) 
    lst <- lapply(unique(tolower(urls)), function(url) try(HEAD(url), silent = T)) 
    a<- list(lst,urls) 
b<- as.data.frame(sapply(a, rbind)) 
b$outcome<- sapply(b$V1, function(x) if (inherits(x, "try-error")) -999 else status_code(x)) 

ありがとう:

website<- read.csv(file= "path") 
website<- website[!duplicated(website$Website),] 
websitm<- website 
websitm$Website <- paste0(ifelse(grepl("^(https?://)?www.",websitm[, 2], ig=T), "", "http://www."),websitm[, 2]) 
websitm$Website <- paste0(ifelse(grepl("^https?://",websitm[, 2], ig=T), "", "http://"),websitm[, 2]) 

Httpcode<- function(x){try(HEAD(x, timeout(seconds = 20), silent = T))} 
websitm$error<- apply(websitm[,2, drop=F], 1, Httpcode) 
websitm$outcome<- sapply(websitm$error, function(x) if (inherits(x, "try-error")) -999 else status_code(x)) 
websitm<- data.frame(lapply(websitm, as.character), stringsAsFactors=FALSE) 
関連する問題