3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メモ:スプシ(GAS)を使った簡易HTMLスクレイピング

Posted at

Googleの基本機能、スプレッドシートだけを用いた簡易的なスクレイピングの方法を紹介します。

今回は、植物の情報をまとめたデータベース「WFO https://worldfloraonline.org/ 」を例に、「ある種が地図情報を持っているか」について知らべていきます。

WFOのデータベースには、種ごとに生育地の地図データを持っているもの、
image.png

持っていないものが存在します。
image.png

前者のソースコードには「OpenLayers」という文字列が含まれていますが、後者には含まれていません。
image.png
image.png
ソースコードはWindouwsの場合画面上で右クリック→「開発者ツールを表示」で見ることができます。

今回はスプレッドシートに「地図の有無を調べたいURL」を羅列し、ソースコードに必要な情報が含まれているかどうかを判別します。

拡張機能の中から「Apps script」を選択し、
image.png

以下のスクリプトを入力します。

GAS

function checkKeywordInURL(url, keyword) {
  if (!url || !keyword) return false;


  try {
    var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
    var content = response.getContentText();
    return content.includes(keyword);
  } catch (e) {
    return false; // URLの取得に失敗した場合もFALSEを返す
  }
}


このスクリプトを保存することで、スプシ上で関数「checkKeywordInURL」が使えるようになります。
使い方としては、調べたいURL、調べたいコードをそれぞれスプレッドシートに入力し、新たなセルに

=checkKeywordInURL(調べたいURLのセル,調べたいコードのセル)

と入力するだけです。
image.png
左側のURLのソースコードに調べたい文字が含まれているか、簡単に確認できました。
E列は目視で確認した地図の有無(=答え)です。

注意点としては、ソースコードが動的に構築されるサイトでは使用できないこと、調べたい文字に記号が入っていると不安定になりやすいことです。
このような場合、Node.jsなどをインストールした方がいいでしょう。また、スクレイピングを禁止しているサイトもあるので事前に確認してください(最悪の場合ボット攻撃とみなされます)。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?