ファイルメーカー(FileMaker)でもWebスクレイピングできた - Twitterのフォロワー数を取得してみる


概要

  • 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)でスクレイピングを試してみてください!