Python

Pythonのスクレイピングで変えるSEOライティング【初級編】

Pythonのスクレイピングで変えるSEOライティング【初級編】

SEOを意識しながらライティングしている方は、こんな悩みを抱えていませんか?

トラハック
トラハック
  • いちいち検索しなくても上位表示されているサイト情報を取得できたら便利なのになあ。
  • データを取得したら分析もできるようになりたいな。

キーワード選定や市場調査は時間のかかる作業なので、できれば効率化したいものですよね。

本記事では下記の内容を紹介します。

この記事を読めば分かること
  • Pythonのスクレイピングという技術を用いたデータ収集方法
    コードの意味は理解できなくても大丈夫
  • スクレイピングと合わせて学んでおくべきこと

「そもそもPythonって何?」という方は次の記事を読んでみてください。プログラミング未経験者でもPythonのコードを書いて動かせるようになります。

https://torahack.com/affiliater-what-is-python

なお、私はこれまでPythonでwebサイトの情報を収集していくつかの自動化ツールを作ってきました。

私がこれまで作成したプログラム
  • webサイトの情報を収集してGoogleカレンダーに自動登録するbot
  • 通貨の売買量(動的なデータ)を基に仮想通貨FXを自動取引するbot
  • 機械学習を用いて画像を自動生成するプログラム(例:馬の画像→シマウマの画像を生成)

それでは、Pythonによるスクレイピングを解説していきます。

Pythonのスクレイピングによるデータ収集方法

Pythonのスクレイピングによるデータ収集方法

Pythonで書いたスクレイピングプログラムを使って、実際にwebサイトの情報を収集してみましょう。

スクレイピングの概要を理解する

スクレイピングは対象のwebサイトのHTMLから、取得したいデータを収集する技術です。と聞くと複雑な処理をしているように感じますが、決して難しいことはありません。

スクレイピング用のコードはwebで検索すれば簡単に見つけられます。それで十分です。そのコードがあればあとは対象webサイトのURLと取得したいHTMLタグ」が分かっていれば取得できるからです。

コードの一部を掲載します。対象のwebページのタイトルを取得する場合、以下のようなコードになります。

一方、対象のwebページのディスクリプションを取得する場合、は以下のようなコードになります。

分かりましたか?webページの「タイトル」と「ディスクリプション」を取得するには指定するHTMLソースのタグ名やCSSセレクタを変更するだけで良いのです。

CSSセレクタについてCSSのセレクタとは?覚えておきたい25種類と書き方に分かりやすくまとまっていたので参考にしてみてください。

スクレイピングで検索上位サイトから情報を取得してみよう

仕組みを理解するよりもまずは手を動かして実際にスクレイピングをしてみましょう。

私のプログラミング学習理論が習うより慣れよだからです。

とにかくwebで検索して見つけたコードを参考に、試行錯誤しながらあなたの作りたいプログラムを作るのが上達の近道です。それに、トライ&エラーしている間や完成に近づける過程でアドレナリンがドバドバ出るのでモチベーションを高く保つことができます。

それではコードを見てみましょう。

このプログラムは、指定したワードのGoogle検索結果上位トップxxを取得して、そのwebページの「URL」「タイトル」「ディスクリプション」「キーワード」をcsvファイルに出力します。出力したcsvファイルは自動でローカルにダウンロードされます。

このコードを一旦何も考えず丸っとコピーしてGoogle Colaboratoryの新しいノートブックに貼り付けてみてください。

…長いですね。大丈夫、編集が必要のある箇所は最低限に抑えています

この中で、8~12行目をあなたの希望に合わせて変更してください。

検索したいキーワードが2語あれば[‘キーワード1’, ‘キーワード2’]のように、3語あれば[‘キーワード1’, ‘キーワード2’, ‘キーワード3’]のように。1つであれば[‘キーワード1’]でよいです。

検索したい件数は「str(10)」の数字の部分のみ変更してください。

以上の点を変更したら、Colaboratory上で実行してみましょう!csvファイルがダウンロードされましたか?

webページの仕様で取得できなかったデータは’No data’となっています。このデータも取得できるよう改善しておきます。

スクレイピングの注意点

スクレイピングは非常に便利ですが、守るべきルールもあります。そのルールとは対象のwebサイトに投げるリクエストの回数と間隔です。

そのルールを守れていないスクレイピングプログラム(クローラー)は、最悪の場合、法を犯す可能性もあるので必ず一読してください

こちらのサイトにルールがよくまとまっていたので参考までに。

スクレイピングは、通常ならば人が検索エンジンからクリックしてアクセスすること(=リクエスト)をプログラムによって実行しています。人よりも高速に複数回のリクエストを投げることができます。

もし1つのwebサイトに秒間何万回もリクエストを投げるようなプログラムを使ったとしたら…?当然サーバーに高い負荷をかけることになります。

そのため、同一webサイト(webサーバー)にスクレイピングする際は「100秒間に100回まで」という基準があります。(私が公開しているコードは、この基準を守るように待機時間を設けています)

スクレイピングが訴訟問題に発展した例として「岡崎市立中央図書館事件」があります。悪意が無かったとしても、ルールを知って守っておかなければいけませんね。

Pythonでスクレイピングするなら合わせて学習しておくべきこと

Pythonでスクレイピングするなら合わせて学習しておくべきこと

ひとまずスクレイピングで検索結果上位サイトの情報を取得できようになったので、次のステップに進んでみましょう。

収集したデータを分析しよう

スクレイピングで大量のデータを収集できたら、次はそのデータを分析できるようになりましょう。

データは存在しているだけでは無価値です。データは活用されてこそ初めて価値を発揮します。そのためにはデータ分析の知識が必要になります。

Pythonを用いたデータ分析を学びたければ、udemyというプログラミング学習動画プラットフォームがおすすめです。

動画学習はプログラミング初心者でも挫折しにくい方法です。プログラミング初心者向けの学習方法について、次の記事に詳細をまとめているので参考にしてみてください。

プログラミング初心者でも挫折せず1年間独学した方法【動画教材がおすすめ!】
プログラミング初心者でも挫折せず1年間独学した方法【動画教材がおすすめ!】独学でプログラミングを学び始めた方は、こんな悩みを抱えていませんか? 本記事では、独学を始めたばかりのプログラミング初心者...

より高度なスクレイピングをしてみよう

今回は簡単なスクレイピングのコードを紹介しましたが、他にも好きなようにデータを取得できるようになりたくありませんか

スクレイピングは深掘りして学ぶ価値のある技術です。

なぜなら、スクレイピングは簡単に実装できて色々なケースに利用できる汎用性がありながら、「自動実行」「動的データの取得」「処理の高速化」など奥が深いからです。

より専門的にスクレイピングを学びたいと思うならばこのあたりの書籍がオススメです。

スクレイピングに必要な外部ライブラリの解説に加え、URLの基礎知識、CSSセレクター、Javascriptが使われた動的データの取得、スクレイピング の禁止事項などを広く学ぶことができます。

スクレイピングによるデータ収集〜機械学習によるデータ分析までカバーしている書籍です。Pythonの基礎をある程度理解できている方向け。

以上で、今回のスクレイピング講座は終わります。

スクレイピング講座まとめ
  • スクレイピングは簡単に実装できる
  • HTMLとCSSの知識が多少あれば、好きなデータを収集対象とすることができる
  • 事前にスクレイピングのルールを確認して、必ず守る
  • データを収集したら次は分析してみよう。

次回以降は収集したデータを分析する方法について書きます。