ウェブスクレイパー:ウェブからデータを集める方法

仕入先のサイトから価格を手作業でスプレッドシートに写すのは、商品が20点なら何とかなります。2,000点となると1週間かかり、しかも入力ミスが残ります。ウェブスクレイパー(パーサーとも呼ばれます)は、代わりにページを開き、各ページから同じ種類の情報を取り出して表に保存する小さなプログラムです。ここでは、スクレイパーでできること、準備するもの、守るべきルールを紹介します。

スクレイパーが役立つ場面
同じ種類の情報が、よく似た多くのページに載っている場合に役立ちます。
- **価格と在庫。**仕入先の価格の変化や、在庫切れの商品を追跡する。
- **仕入先のカタログ。**商品名、説明、画像、価格を自分のショップに移す。
- **掲載情報。**公開されている掲示板から、不動産、車、求人の掲載情報を1つの表に集める。
- **イベントや記事。**公開されているカレンダーやニュースページから、日付、タイトル、リンクを集める。
集めてよいものだけを集める
何よりもまず、そのデータを取得してよいかを確認しましょう。
- **公開ページのみ。**データを見るのにログインが必要なら、スクレイパーは適切な手段ではありません。
- **サイトの利用規約を読む。**多くのサイトは、何を収集してよく、何がいけないかを定めています。大手プラットフォーム、検索エンジン、SNSはたいてい禁止しているので、公式のエクスポート機能やAPIを使いましょう。
- **アクセス頻度を守る。**ページの間に数秒の間隔を空ければ、サイトへの負荷を抑えられます。CAPTCHAやブロックを回避しようとしてはいけません。
- **個人情報に関する法律を守る。**人の名前、メールアドレス、電話番号は個人データで、多くの国でその収集が厳しく制限されています。対象から外しましょう。
最終的に、サイトのデータを収集して使ってよいかどうかを判断するのはあなた自身です。始める前に確認しましょう。
ページを説明する
スクレイパーは実際のページの構造に合わせて作られるので、正確に伝えましょう。
- 一覧ページへのリンクと、商品1点のページへのリンク。
- **おおよそのページ数。**たとえば「1ページに24商品、一覧ページが約40ページ」。
- ブラウザで保存したページ1〜2つ(ファイル>名前を付けてページを保存)またはそのスクリーンショット。
項目を表の列のように並べる
結果をスプレッドシートとして考え、列の名前を順番に、それぞれ例を付けて書きましょう。
- 商品名:「オーク材のまな板 L」
- 価格:「34.90」
- **旧価格:**セール中の場合は「39.90」
- 在庫:「あり」
- 商品ページへのリンクと画像のリンク
あいまいな30項目より、明確な10項目のほうが役立ちます。「在庫ありの商品のみ」など、必要な条件も書き添えましょう。
形式と実行場所を選ぶ
- CSVはどの表計算ソフトでも開け、多くのショップシステムにインポートできます。
- Excelは、手作業で絞り込みや並べ替えをするなら便利です。
- JSONは、データをほかの場所に読み込む開発者向けです。
スクレイパーはご自身のパソコン上でPythonで動くので、データは直接あなたの手元に届き、最新の数字が必要なときにいつでも再実行できます。
サイトが変わったとき
スクレイパーは、現在のページの見た目に沿って動きます。サイトのデザインが新しくなると、項目を見つけられなくなり、更新が必要になることがあります。また、控えめなペースでもアクセスを制限するサイトもあります。毎週データに頼るなら、このことを想定しておきましょう。
まとめ
必要な公開ページと項目を決め、サイトの利用規約を確認し、控えめなペースを守り、個人データは対象から外しましょう。コードを自分で書く代わりに任せたいなら、ウェブスクレイパーを注文できます。サイト、項目、保存したページ1〜2つを送れば、Pythonのコード、設定ファイル、そしてCSV、Excel、JSONにデータを出力するための実行手順書が届きます。お支払いは納品を承認した後にはじめて確定します。