始める無料で始める

read_lines() の possibly() 版

引き続き、スクレイピング対象として渡された一連のURLを使います。アクセスできないURLを見つけるために、いくつかの方法を試します。なぜかというと、Webスクレイピングの最初のステップは、そのURLにアクセス可能かどうかを確認することだからです。いま書いているコードはこの判定に役立ちます。

前の演習では、read_lines() 関数を safely() でラップしました。この演習では possibly() 関数を使います。

Webの用語では、404はそのページが利用できないことを示します。この数値を otherwise 引数として使います。

また、read_lines() はWebページを読むと長さ n のベクトルを返すので、これらは paste() 関数を使って結合します。

urls ベクトルは用意されています。

この演習はコースの一部です

purrr で学ぶ中級関数型プログラミング

コースを見る

演習の手順

  • read_lines() 関数を possibly() でラップし、失敗した場合は 404 を返すようにしましょう。

  • 作成した関数をURLリストに対して map し、その結果をそのまま set_names() にパイプで渡します。

  • 各要素を、paste() 関数で collapse 引数を " " に設定して結合し、長さ1の文字列にします。

  • 値が 404 と等しい要素だけを残します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create a possibly() version of read_lines()
possible_read <- ___(___, otherwise = ___)

# Map this function on urls, pipe it into set_names()
res <- map(urls, ___) %>% ___(urls)

# Paste each element of the list 
res_pasted <- ___(res, ___, collapse = ___)

# Keep only the elements which are equal to 404
___(res_pasted, ___)
コードを編集して実行