みなさん,こんにちは。
シンノユウキ(shinno1993)です。
インターネットの海に情報を投げ込む者としては,自分の記事がどのような検索ワードで上位に表示されているかは気になるところです。
同時に,そのキーワードでどのような記事が上位を占めているのかも気になります。そこで今回は,PythonでRPAを構築できるAutomagicaを利用して,特定のキーワードでGoogle検索を行い,上位に表示されたタイトルをExcelに蓄積していきたいと思います。
*あまりに多くの検索を行うのはやめておいた方が良いでしょう。あくまでも,自分が普段検索できる量に収まる範囲で利用しましょう。それこそ,デスクトップを眺めながらでも待てる程度に。
Automagicaで情報を収集する流れ
RPAを構築するツールとして,Automagicaを利用します。Automagicaの使い方については下記を参照してください:
流れは以下のようになります:
- Excelから検索キーワードの取得
- ブラウザでGoogle検索のページを開き,検索
- 上位3つの検索結果のタイトルとURLを取得
- Excelに書き込む
- 最後の検索キーワードになるまでループ
Excelファイルとして,下記のようなファイルを用意しておきましょう:
A列がキーワード,B~D列に1~3位のタイトルを入れていく感じです。
Google検索→Excelにデータ蓄積のコード
コード全文は下記のようになります:
from automagica import *
#Excelからキーワードの取得
excel = Excel(file_path="Excelファイルのパス")
keyword_col = 1
start_row = 2
last_row= 4
for r in range(start_row, last_row+1):
keyword = excel.read_cell(keyword_col, r)
#Google検索
browser = Chrome()
browser.browse_to('https://www.google.com/?hl=ja')
browser.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input').send_keys(keyword)
browser.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[3]/center/input[1]').submit()
#1位~3位まで取得→書き込み
elements = browser.by_classes("LC20lb")
excel.write_cell(keyword_col + 1, r, elements[0].text)
excel.write_cell(keyword_col + 2, r, elements[1].text)
excel.write_cell(keyword_col + 3, r, elements[2].text)
browser.exit()
Excelからキーワードの取得
#Excelからキーワードの取得
excel = Excel(file_path="C://Users//yukis//Desktop//sample.xlsx")
keyword_col = 1
start_row = 2
last_row= 4
for r in range(start_row, last_row+1):
keyword = excel.read_cell(keyword_col, r)
ここでは,Excelファイルを開き,read_cell
によってキーワードを取得しています。VBAとは逆で,列・行に引数を指定します。
複数のキーワードがある場合,ループさせる必要があるのでforステートメントを使っています。
Google検索
#Google検索
browser = Chrome()
browser.browse_to('https://www.google.com/?hl=ja')
browser.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input').send_keys(keyword)
browser.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[3]/center/input[1]').submit()
Google検索の部分のコードです。キーワードを入力するボックスと検索を実行するボタンはxpathによって指定しています。
キーワードの入力は,キーワードを入力するボックスのエレメントを取得し,それに対してsend_keys(keyword)
でOKです。
1位~3位まで取得→書き込み
#1位~3位まで取得→書き込み
elements = browser.by_classes("LC20lb")
excel.write_cell(keyword_col + 1, r, elements[0].text)
excel.write_cell(keyword_col + 2, r, elements[1].text)
excel.write_cell(keyword_col + 3, r, elements[2].text)
browser.exit()
検索結果から1~3位のタイトルを取得し,書き込んでいます。Google検索の結果は,"LC20lb"のクラスが割り当てられています。これらのエレメントからtext
を取得し,write_cell
で書き込んでいます。
最終的には下記のように結果が挿入されます:
まとめ
今回はAutomagicaを利用したGoogle検索→Excelへのデータの蓄積を行いました。
少ないコードで,面倒な作業を手軽に自動化できました。これらの検索→転記の作業は,もちろん手作業でもできるのですが,やはり面倒で手でやろうとするとミスが多くなる可能性もあります。こういった部分は機械に任せた方が得策ですね。
定期的に実行し,日付毎などでまとめていくと競合の傾向なども見えてくるかもしれません。