2017-08-09 12 views
1

私はthis websiteのウェブスクレイピングプロジェクトを行っています。ページが存在する225の数に設定するアーティストは、存在するのでhttps://lsdb.eu/artists/view/225/ウェブサイトからすべての有効なURLを取得するには?

:私がやりたいものをこの時点で

は、このようなURLからアーティスト名をこすりすることです。ただし、https://lsdb.eu/artists/view/226/は存在しませんが、存在する226より大きい番号のページがあります。

https://lsdb.eu/artists/view/xxx/のURLが有効であるかどうかを確認するためにウェブサイトをスクラップする方法はありますか?

+0

スクラップを 'try'の中にラップして、悪いURLをスキップして次のものに移動することができます。代わりに、 'GET(" https://lsdb.eu/artists/view/225/ ")$ status_codeは200(良い)を返すので、' httr :: GET'はサイトの応答へのアクセスを許可します。 https://lsdb.eu/artists/view/226/ ")$ status_code'は404(悪い)を返します – roarkz

答えて

0

このサイトは、一般的にサイトの方が親しみやすいHTTP HEADリクエストに応答します(通常、コンテンツは返されないため、時間と帯域幅が節約されます)。あなたはシーケンシャル検索のシリーズを作ることを選択した場合、あなたはまだサイトにDoSの可能性として、要求間のいくつかのポーズを追加

library(httr) 

is_valid_artist <- function(x) { 
    httr::status_code(httr::HEAD(sprintf("https://lsdb.eu/artists/view/%s/", x))) 
} 

is_valid_artist("225") 
## [1] 200 

is_valid_artist("226") 
## [1] 404 

is_valid_artist("42437") 
## [1] 200 

is_valid_artist("100000000") 
## [1] 404 

:あなたは、次のような何かを行うことができます。完全なコンテンツを取得するには5-10秒かかることをお勧めしますが、HEADリクエストでは倫理的に1秒(IMO)にすることができます。

関連する問題