03_狙うキーワードの競合サイトのタイトル、見出しを分析してSEO上位を狙おう

Googleスプレッドシートの準備

ポイント Google Cloud PlatformからGoogle Sheetを編集できるAPI鍵の取得方法について Google Sheetは全ユーザ公開するのかと思いきや、特定APIにのみ公開という設定ができて内心ホッとしてます。
 

Pythonによるブラウザ自動操作

ポイント 前回のプログラムの復習を兼ねてくれているので、わかりやすいです。
ちょいちょいプログラムミスをしてくださる(あえて?)ので、「あ、ここチガウ」といった形で間違いが発見できてたのしいです。
 

条件分岐と繰り返しを使って要素を取り出してみよう

ポイント 同じ操作でデータを取得(keyword、タイトル、説明文)を省略せずに毎回説明してくださるので、写経をしながら意味を覚えることができます。 今回のポイントのおかげでseleniumのデータ取得のイメージがだいぶつかめました!
 
 

スクレイピングをしてみよう

ポイント ここの理解には少し時間がかかる人も多そう。 GetでURL先の情報を取得して、BeautifulSoupの中でHTMLに咀嚼してから情報を取得するんですね。頭の中にプログラムのイメージをしっかり入れておかないと苦労するかも。
今回の参考情報
Beautiful Soup のfind_all( ) と select( ) の使い方の違い | ガンマソフト株式会社
PythonによるWebスクレイピングでは、 requests と Beautiful Soup の2つのライブラリが定番です。requestsでHTMLをダウンロードし、Beautiful Soup で解析して情報を取り出します。 Beautiful Soup でHTMLの中から HTML要素を取得するには「find系」( find_all()、 find())と「select系」( select()、 select_one() )という2タイプのメソッドを用います。 機能は2つとも同じであり、 検索条件に合うHTML要素を返します 。 異なるのは「検索条件の指定方法」です。例えば、href属性が"sample.pdf"のa要素を検索するには、それぞれ以下のような書き方になります。 どちらも同じ要素を返します 。 soup.find_all("a", href="sample.pdf") soup.select("a[href='sample.pdf']") このように、 find_all()メソッドは「要素名」に続いて「属性」をキーワード引数で指定できます。一方、 select() メソッドは、「CSSセレクタ」が使えます。 find_all()と select()は要素を リストで返しますが、以下の表のようにマッチする要素を ひとつだけ返すメソッド も用意されています。 find系とselect系のどちらを使うかは好みでいいと思いますが、select系でCSSセレクタを用いた方がスッキリ書けて臨機に対応できる場合があります。今回はいくつか例を挙げてみましたので、 自分にはどちらが使いやすいか の選択材料にしていただけたらと思います。 今回は以下の簡単なHTMLから要素を取得します。 >>> from bs4 import BeautifulSoup >>> html = """ ラーメンメニュー 醤油ラーメン
 
 
書けた、書けたけどこれはまだ理解が足りていません💦
プログラムを動かしながら、復習することが大事です。
 
HTMLのメタ構造を覚えながら、Pythonの辞書やリストにどうやって格納していくのか。ここを図式化して覚えることができたら、格段にイメージがつきやすくなると思います。
 
 

Googleスプレッドシートへの情報の書き込み

ポイント 汎用的でつかいやすいためか、API制限は強め。 100秒あたり100件リクエストまでだと、明細データの連携は難しく、集計値のみになりそうかな。
 
Google SheetのAPI上限
  1. ユーザーごとに100秒あたり100件のリクエストまで
  1. 1秒あたり10件のリクエストまで
 
 
 
 

スプレッドシートへの検索キーワード、順位の書き込み

ポイント お決まり処理系なので、ひたすら意味を理解しつつ写経。 全然プログラムを動かしていないから、どこでエラーが出るかわからずこわい・・・。
 
 

プログラムを関数化してみよう

ポイント お決まり処理系なので、ひたすら意味を理解しつつ写経。 全然プログラムを動かしていないから、どこでエラーが出るかわからずこわい・・・。
 
エラーが何個か出ました。
関数に与えるパラメータの順番が逆だったりとかシンプルなものが多く、正常に動きました。
しかしGoogle Sheetsの「ユーザーごとに100秒あたり100件のリクエスト」制限がきついせいで、何回もエラーになってしまいますね。
リクエスト回数を落としながらゆっくり処理するプログラムに変えようかな・・・。
 
コード全体を復習して、Pythonの書き方のイメージがついてきました!!
 
 
次回は内部SEOについて。
これも一番飯店のホームページでやりたかった内容なので、インプットとアウトプットの両方を得てまいります。
👇をクリックしてください。