Pythonでスクレイピングサンプルコード【Google検索結果】

さて、今回はGoogle検索結果をスクレイピングするサンプルコードを紹介していきましょう。

・スクレイピングが使えれば...

  • 応用していろんなWebサイトをスクレイピング
  • データ分析できてマーケティングに応用
  • 好きな女優の画像収集も可能

Googleをスクレイピングする前の準備

Pythonのインストールがまだなら【超簡単】Pythonインストールして開発環境を作ろう【Windows】をどうぞ。

必要なライブラリをインストールしてくる

  1. コマンドプロンプトを起動
    Microsoft Windows [Version 10.0.18362.476]
    (c) 2019 Microsoft Corporation. All rights reserved.
    
    C:\Users\[USERNAME]>
  2. コマンドプロンプトを起動したら、ライブラリを入れる
    C:\Users\[USERNAME]>pip install requests beautifulsoup4
  3. インストールされているか確認
    C:\Users\[USERNAME]>pip list
    
    Package                Version
    ------------------- --------------------
    beautifulsoup4       4.8.1
    requests             2.20.1

・今回使う2つのライブラリ

  • requests...Webとの接続
  • beautifulsoup4...Webサイトの情報を取って解析

Google検索結果のコードを作成する

  1. コマンドプロンプトを起動
    Microsoft Windows [Version 10.0.18362.476]
    (c) 2019 Microsoft Corporation. All rights reserved.
    
    C:\Users\[USERNAME]>
  2. デスクトップへ移動
    C:\Users\[USERNAME]>cd desktop
  3. 『search.py』というファイルを作成
    C:\Users\[USERNAME]\Desktop>type nul > search.py
  4. search.pyファイルを開く
    C:\Users\[USERNAME]\Desktop>search.py
  5. search.pyファイル内に次のコードを入力
    import requests as web
    import bs4
    
    keyword = input('Please keyword: ')
    
    total_search_num = 10
    search_word = [keyword]
    url = 'https://www.google.co.jp/search?num=' + str(total_search_num) + '&q=' + ' '.join(search_word)
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"
    
    response = web.get(url, headers={"User-Agent": user_agent})
    soup = bs4.BeautifulSoup(response.text, 'html.parser')
    
    index = 1
    for i in soup.find_all("span", class_="S3Uucc"):
        print(index, i.getText())
        index += 1

Google検索結果のスクレイピングコード解説

1. インストールしたライブラリを使えるようにインポート

import requests as web
import bs4
  • importでさっきインストールしたライブラリを使う準備完了
  • as [name]でライブラリを分かりやすい名前に変更可能

・2つのライブラリのドキュメント
Quickstart — Requests 2.25.1 documentation
Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation

2. 検索したい文字を入力するために使うコード

keyword = input('Please keyword: ')
  • keywordという変数に検索したいキーワードを入力できるようにする
  • Inputの()内はどんな文章でもOK。分かりやすくしよう

3. 検索件数を決めて、Google検索のURLに入れる

total_search_num = 10
search_word = [keyword]
url = 'https://www.google.co.jp/search?num=' + str(total_search_num) + '&q=' + ' '.join(search_word)
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"
  • 1行目...検索数を決めている。今回は10。inputにして入力にしてもOK
  • 2行目...さっきのキーワードをリスト化。検索キーワードが複数の可能性があるため
  • 3行目...Google検索URLに検索数と検索キーワードをURLにいれる
  • 4行目...どのようなブラウザからアクセスするかGoogleに伝えるコード

HTTPではUser-Agentヘッダーが定義されている。 クライアントはサーバーにリクエストを送る際に、ユーザーエージェントの情報をUser-Agentヘッダーとして送信する。

4. 実際にデータを取り出す作業

response = web.get(url, headers={"User-Agent": user_agent})
soup = bs4.BeautifulSoup(response.text, 'html.parser')

index = 1
for i in soup.find_all("span", class_="S3Uucc"):
    print(index, i.getText())
    index += 1
  • 1行目...さっきのURLからレスポンスが返ってくるかの確認
  • 2行目...レスポンスが返ってきたらGoogle検索結果をHTML形式で取得
  • 4行目...検索結果の数が分かりやすいように番号をふる変数
  • 5~7行目...HTMLのクラスS3Uucc(検索結果のタイトル)を探し1つずつ取り出す

コードを実行してGoogle検索結果をスクレイピング

  1. コマンドプロンプトを起動して次のコードを実行
    C:\Users\[USERNAME]\Desktop>python search.py
  2. 「Please keyword: 」がでたら、検索文字を入力してEnter。今回は「Python」
    C:\Users\[USERNAME]\Desktop>python search.py
    Please keyword: python
    1 プログラミング言語 Python
    2 Python - ウィキペディア
    3 Welcome to Python.org
    4 Python入門者はココで勉強しよう!学習サイト最強6選【2019年 ...
    5 Pythonとは?言語の特徴から学習法まで初心者向けにわかり ...
    6 Pythonの開発環境を用意しよう!(Windows) | プログラミングの ...
    7 Python | プログラミングの入門なら基礎から学べるProgate[プロ ...
    8 Python入門
    9 Python入門 ~Pythonのインストール方法やPythonを使った ...
    10 Pythonってどんな言語なの? (1/2):Python入門 - @IT

上記のように検索結果が表示されたら成功。

まとめ: ルールを守ってスクレイピングを楽しもう

これでGoogleの検索結果をスクレイピングすることができた。

データ分析やマーケティングなどに応用できるので、ぜひ使ってみよう。

・スクレイピングしちゃいけないサイトは知ってる?
スクレイピングしたいサイトのトップページURLに「/robots.txt」を追加して確認しよう。
「Disallow」だとスクレイピングできないから注意。

本で学習【入門~中級】Pythonを学ぶとき「飛躍的」に成長できる本を紹介

・Webアプリにスクレイピングを組み込んでみる?
Webアプリを作りたいならDjangoというフレームワークをインストールすることが必要。【簡単】Python/WindowsにDjangoローカルサーバーを構築する方法でまずDjangoをインストールしてみよう。

人気記事コードをきれいに書きたい人向け「3日できれいに書ける」たった1冊本とは?