概要
- Twitterのフォロワー数を取得してみたい(Twitter APIは使わない)
- FileMaker標準の機能だけでWebスクレイピングする
- 実験環境 FileMaker Pro 17 Advanced(17.0.7.700)
ファイルメーカー(FileMaker)でスクレイピングする方法
それでは、ファイルメーカー(FileMaker)でスクレイピングする方法をご紹介します。
Webビューアの表示内容からHTMLコードを取得する
まず、スクレイピングしたい対象のページをWebビューアで表示させます。
今回は、好きなTwitterIDを入力したらそのアカウントページが開くようにTwitterIDをフィールド入力させて、それをURLにくっつけています。
Webビューアの設定 => Webサイトの選択 => カスタムWebアドレス
これでWebビューアにスクレイピング対象のページを表示させることができましたので、次はそのページからHTMLコードを抽出します。
FileMakerにはGetLayoutObjectAttribute関数が用意されており、これを利用できます。
GetLayoutObjectAttribute ( オブジェクト名 ; 属性名 { ; 繰り返し回数 ; ポータル行番号 } )
属性名には「content」を指定します。オブジェクト名にはWebビューアの名前を指定するのですが...自分はWebビューアオブジェクトに名前をつける方法を知りませんでした。
調べてみると、Webビューアの名前はレイアウトモードで付けることができるようです。
よく使うフィールドタブではなく、そのとなりのオブジェクトタブにて対象のWebビューアの名前を変えることができます。名前は任意のもので良くて、今回は「TwitterPage」と名前を付けました。
Webビューアに名前を付けたら、スクリプトにて次のようにGetLayoutObjectAttributeを書きます。
GetLayoutObjectAttribute ( "TwitterPage"; "content" )
これで、次のようなWebビューアに表示しているページのHTMLコードが返ってきます。
<!DOCTYPE HTML>
<!DOCTYPE html PUBLIC "" ""><HTML lang="ja" data-scribe-reduced-action-queue="true"><HEAD><META
content="IE=11.0000" http-equiv="X-UA-Compatible">
<META charset="utf-8">
・・・
返ってきた値は変数やフィールドに格納しておきましょう。
取得したHTMLコードから該当箇所を抽出する
私は、取得したHTMLコードは変数「$HTMLソースコード」に格納しました。
そのソースコードから、Middle関数とPosition関数を使用してtitleを抽出してみます。
-
Middle関数
テキストの先頭文字位置で指定された文字から、文字数で指定された文字数分のテキストを抽出する。
例:Middle ( "(408) 555-9054" ; 2 ; 3 ) は「408」を返す。 -
Position関数
テキスト内で検索テキストを検索し、指定された回数目の先頭文字位置を返す
例:Position ( "Mississippi" ; "iss" ; 1 ; 1 ) は、「2」を返す。
これらを組み合わせると、titleは次のように抽出できます。
Middle (
$HTMLソースコード;
Position( $HTMLソースコード; "<title>"; 1; 1 ) + 7 ;
Position( $HTMLソースコード; "</title>"; 1; 1 ) - Position( $HTMLソースコード; "<title>"; 1; 1 ) - 7
)
- $HTMLソースコードの中から
-
<title>
の閉じカッコの次の文字が何文字目か計算して -
<title>~</title>
の間に何文字あるのか計算
という考え方でtitleタグ内の文字を抽出できます。
Twitterのフォロワー数を取得してみる
最初に挙げたフォロワー数の取得例ではピティナのTwitterアカウントのフォロワー数を取得しています。
実際のHTMLコードを覗いてみると、フォロワー数は次のように記載されていました。
<LI class="ProfileNav-item ProfileNav-item--followers"><A title=6,271人のフォロワー
ここから「6,271」のみ取り出すための記述が次のものになります(WebビューアでTwitterにはログインしていない状態でHTMLコードを取得しました。ログインしている場合は変わるかもしれません)。
Middle (
$HTMLソースコード;
Position( $HTMLソースコード;"<LI class=\"ProfileNav-item ProfileNav-item--followers\"><A title=\""; 1; 1 ) + 65 ;
Position( $HTMLソースコード;"人のフォロワー"; 1; 1 ) - Position( $HTMLソースコード;"<LI class=\"ProfileNav-item ProfileNav-item--followers\"><A title=\""; 1; 1 ) - 65
)
最初に紹介したようにフォロワー数が取得できた状態となります!
さいごに
Twitterのフォロワー取得については、HTMLの構造変更などの影響を受けないようにTwitter APIを利用した方が良いかと思いますが、今回はファイルメーカー(FileMaker)でもWebスクレイピングできることの紹介例として扱ってみました。
ファイルメーカー(FileMaker)は非エンジニアでもデータを簡単に扱うことができるので、ファイルメーカー(FileMaker)にデータを取り込んであげることで活用の幅が広がるかもしれません。
そのような機会があれば、ぜひファイルメーカー(FileMaker)でスクレイピングを試してみてください!