はい、2つのライブラリを使えば"誰でも簡単"にスクレイピング可能ですよ。
さて、今回はGoogle検索結果をスクレイピングするサンプルコードを紹介していきましょう。
Googleをスクレイピングする前の準備
Pythonのインストールがまだなら【超簡単】Pythonインストールして開発環境をつくる方法【Windows】をどうぞ。
必要なライブラリをインストールしてくる
- コマンドプロンプトを起動
Microsoft Windows [Version 10.0.18362.476] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\[USERNAME]>
- コマンドプロンプトを起動したら、ライブラリを入れる
C:\Users\[USERNAME]>pip install requests beautifulsoup4
- インストールされているか確認
C:\Users\[USERNAME]>pip list Package Version ------------------- -------------------- beautifulsoup4 4.8.1 requests 2.20.1
・今回使う2つのライブラリ
- requests...Webとの接続
- beautifulsoup4...Webサイトの情報を取って解析
Google検索結果のコードを作成する
- コマンドプロンプトを起動
Microsoft Windows [Version 10.0.18362.476] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\[USERNAME]>
- デスクトップへ移動
C:\Users\[USERNAME]>cd desktop
- 『search.py』というファイルを作成
C:\Users\[USERNAME]\Desktop>type nul > search.py
- search.pyファイルを開く
C:\Users\[USERNAME]\Desktop>search.py
- 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検索結果をスクレイピング
- コマンドプロンプトを起動して次のコードを実行
C:\Users\[USERNAME]\Desktop>python search.py
- 「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で自動化したいなら学習に最適な2冊はこれ
・Webアプリにスクレイピングを組み込んでみる?
Webアプリを作りたいならDjangoというフレームワークをインストールすることが必要。【簡単】Python/WindowsにDjangoローカルサーバーを構築する方法でまずDjangoをインストールしてみよう。