Power QueryでWebページ内の特定の文字列をスクレイプする

Excel(エクセル)
スポンサーリンク/Sponsored Link

テーブル形式のデータの読み込みには、めっぽう強いPower Queryですが、

「このページのここんとこの文字だけ読み込みたい」

というのは、なかなか苦手です。

そのやり方のメモです。

スポンサーリンク/Sponsored Link

Webページをソースとしてデータを読み込む

まずは「データの取得と変換」→「Web」から

「データの取得と変換」→「Web」
URLを入力する

この次の画面では、いったんWebページをテーブルとして解析したツリーが示されますが、ツリー最上層のところで右クリック→「データの変換」

ツリー最上層のところで右クリック→「データの変換」

これで一旦、Webページ全体がソースとして読み込まれます。

一旦、Webページ全体がソースとして読み込まれます
スポンサーリンク/Sponsored Link

データ形式をHTMLからテキストに変更

いまの画面の右端、「適用したステップ」のところから、「ソース」のステップの設定変更をします。

「適用したステップ」のところから、「ソース」のステップの設定変更

データ形式を「テキストファイル」に変換

データ形式を「テキストファイル」に変換

これで、ソースをそのままエディタで開いた感じの読み込み方式に変更されました。

ソースをそのままエディタで開いた感じの読み込み方式に変更
スポンサーリンク/Sponsored Link

読み込みたいテキストだけが残るように絞り込み

あとは、実際に読み込まれたデータを見ながら、欲しいものだけが残るように絞り込みをします。

フィルタによる絞り込み

例えば、リンク先をすべて抽出するのであれば

テキストフィルター→指定の値を含む
指定の値を含む <a href=

こんなふうに、特徴的な文字列を使ってフィルターすれば

<a href= を含む行が抽出された

こんな感じで出てきます。

「列の分割」を使ったクレンジング

これではまだ汚いので、

一例ですが、例えばこういうことをやると

列の分割→区切り記号による分割
区切り記号カスタム <a href="

この操作で、<a href=” のところで分割され、かつ、<a href=” そのものは消えた状態になります。

「区切り記号の出現ごと」をチェックしたので、一行に複数のaタグがあれば、列がたくさんできるはずですが、1列しか増えなかったので、一行に複数のaタグが存在する事例はなかったようです。

もし複数の列がどどっと増えるようであれば「その他の列のピボット解除」を使ってたて並びに変換して次のステップに進みます。

ここでもう一度、a タグの終わるところの「”>」に着目して列を分割します。

列の分割→区切り記号による分割

今回は、ターゲットにした aタグの閉じカッコだけで分割したいので「一番左の区切り記号」をチェック

区切り記号 カスタム "> 一番左の区切り記号

まだ少し余計なものがくっついていますが、aタグの中身だけを取り出すことができました。

aタグの中身だけが取り出された列

同様にして、 class や targetを分割によって取り除いていくと、リンク先URLだけのデータを作ることができます。

インデックス列を使った絞り込み

以上とは別に、「ここからここまでの行が欲しい」とはっきりしている場合には、インデックス列を使うといいかなと思います。

列の追加 インデックス列
インデックス列が生成され、行に番号がついた

例えばインデックス167から182までの行を取り出すのであれば

数値フィルター→ 指定の値の間
次の値以上 167
次の値以下 182
OK

目的の範囲だけが取り出されました。

インデックス167から182の行だけが取り出された
パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、本年よりオンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

キュリオステーション志木店運営をフォローする

コメント

タイトルとURLをコピーしました