カテゴリ: Python 更新日: 2026/06/13

PythonでGoogle検索結果をスクレイピングする方法を完全解説!初心者向けWebスクレイピング入門

PythonでGoogle検索結果をスクレイピングする方法
PythonでGoogle検索結果をスクレイピングする方法

先生と生徒の会話形式で理解しよう

生徒

「PythonでGoogleの検索結果って自動で取得できますか?」

先生

「できますよ。Webスクレイピングという技術を使えば、検索結果のタイトルやURLを取得できます。」

生徒

「スクレイピングって難しそうです…」

先生

「基本はとてもシンプルです。ページを取得して、必要な部分だけ取り出すだけですよ。」

1. Webスクレイピングとは?Python初心者向け解説

1. Webスクレイピングとは?Python初心者向け解説
1. Webスクレイピングとは?Python初心者向け解説

Webスクレイピングとは、インターネット上のWebページから情報を自動で取得する技術です。例えば、Google検索結果のタイトル一覧やURLをまとめて取得することができます。

人がブラウザで検索してコピーする作業を、プログラムが代わりにやってくれるイメージです。Pythonはこのスクレイピングに非常に向いている言語で、初心者でも扱いやすいのが特徴です。

2. Pythonでスクレイピングに必要なライブラリ

2. Pythonでスクレイピングに必要なライブラリ
2. Pythonでスクレイピングに必要なライブラリ

PythonでGoogle検索結果を取得するには、主に次のライブラリを使います。

  • requests:Webページを取得するためのツール
  • BeautifulSoup:HTMLを解析して必要な情報を取り出すツール

まずはインストールします。


pip install requests
pip install beautifulsoup4

これで準備は完了です。

3. PythonでGoogle検索ページを取得する方法

3. PythonでGoogle検索ページを取得する方法
3. PythonでGoogle検索ページを取得する方法

まずはGoogleの検索結果ページを取得してみましょう。


import requests

url = "https://www.google.com/search?q=Python+スクレイピング"
headers = {"User-Agent": "Mozilla/5.0"}

response = requests.get(url, headers=headers)
print(response.text[:500])

ここでのポイントはUser-Agentです。これは「ブラウザからアクセスしていますよ」と伝えるための設定で、これを入れないと正しく取得できないことがあります。

4. BeautifulSoupで検索結果を解析する方法

4. BeautifulSoupで検索結果を解析する方法
4. BeautifulSoupで検索結果を解析する方法

取得したHTMLから検索結果を取り出します。


from bs4 import BeautifulSoup

html = response.text
soup = BeautifulSoup(html, "html.parser")

titles = soup.select("h3")

for title in titles:
    print(title.text)

selectはHTMLの中から特定のタグを探す機能です。ここでは検索結果のタイトルに使われているh3タグを取得しています。

5. URLリンクも一緒に取得する方法

5. URLリンクも一緒に取得する方法
5. URLリンクも一緒に取得する方法

タイトルだけでなく、リンク先URLも取得してみましょう。


links = soup.select("a")

for link in links:
    href = link.get("href")
    if href and "/url?q=" in href:
        print(href)

hrefはリンク先URLのことです。不要なリンクも含まれるため、条件を付けて必要なものだけ取得しています。

6. タイトルとURLをセットで表示する方法

6. タイトルとURLをセットで表示する方法
6. タイトルとURLをセットで表示する方法

より実用的に、タイトルとURLをセットで表示します。


results = soup.select("div.g")

for result in results:
    title = result.select_one("h3")
    link = result.select_one("a")

    if title and link:
        print(title.text)
        print(link.get("href"))
        print("-" * 30)

div.gは検索結果のまとまりです。このようにまとまり単位で取得すると、データ整理がしやすくなります。

7. Googleスクレイピングの注意点(重要)

7. Googleスクレイピングの注意点(重要)
7. Googleスクレイピングの注意点(重要)

Google検索のスクレイピングは便利ですが、注意点もあります。

  • 利用規約に違反しないようにする
  • 短時間で大量アクセスしない
  • 公式APIの利用も検討する

特に初心者は「テスト目的」で少量データを取得するようにしましょう。

8. Pythonスクレイピングを理解するコツ

8. Pythonスクレイピングを理解するコツ
8. Pythonスクレイピングを理解するコツ

スクレイピングは難しく感じますが、やっていることはシンプルです。

「ページを取得する」「必要な部分を探す」「表示する」この3ステップだけです。

例えば、新聞の中から見出しだけを切り抜く作業と同じです。最初は小さな部分から試して、少しずつ理解を深めていきましょう。

まとめ

まとめ
まとめ

PythonでGoogle検索結果をスクレイピングするポイント総整理

今回の記事では、Pythonを使ったWebスクレイピングの基本から、Google検索結果の取得方法、HTML解析、タイトルやURLの抽出方法までを段階的に解説しました。Python初心者でも理解しやすいように、requestsとBeautifulSoupという代表的なライブラリを活用し、実際に動くサンプルコードを交えながら学習できる構成になっています。

Webスクレイピングは、インターネット上にある膨大な情報を効率的に収集するための重要な技術です。特にPythonは文法がシンプルで、初心者でも扱いやすく、スクレイピング用途として非常に人気があります。検索エンジンの結果ページを対象にしたスクレイピングは、SEO分析や競合調査、キーワードリサーチなどにも活用できるため、実務でも役立つスキルとなります。

本記事で紹介した内容を振り返ると、まずrequestsライブラリでWebページにアクセスし、HTMLデータを取得するところからスタートしました。その際に重要となるのがUser-Agentの設定であり、これを適切に設定することで、ブラウザからのアクセスとして認識され、正常なHTMLを取得できるようになります。

次に、BeautifulSoupを使ってHTML構造を解析し、特定のタグやクラスを指定して必要な情報だけを抽出しました。例えば、検索結果のタイトルはh3タグに含まれているため、selectメソッドを使って効率的に取得することができます。また、リンクURLについてもaタグのhref属性から取得し、条件分岐によって不要なリンクを除外する方法を学びました。

さらに実践的な内容として、検索結果をまとめて扱うためにdivタグのまとまり(div.g)単位で処理する方法も解説しました。このように構造を意識してデータを取得することで、タイトルとURLをセットで管理できるようになり、データ整理や分析の効率が大幅に向上します。

一方で、Google検索結果のスクレイピングには注意点もあります。利用規約を守ること、過剰なアクセスを避けること、必要に応じて公式APIの利用を検討することなど、安全かつ適切に利用する姿勢が求められます。スクレイピングは便利な技術ですが、正しい知識とマナーを持って扱うことが重要です。

PythonによるWebスクレイピングは、「ページ取得」「HTML解析」「データ抽出」というシンプルな流れで構成されています。この基本をしっかり理解すれば、ニュースサイト、ECサイト、ブログなど、さまざまなWebサイトから情報を取得できるようになります。まずは今回紹介したGoogle検索スクレイピングをベースに、少しずつ応用範囲を広げていきましょう。

まとめのサンプルプログラム(実践復習用)


import requests
from bs4 import BeautifulSoup

def get_google_results(keyword):
    url = f"https://www.google.com/search?q={keyword}"
    headers = {"User-Agent": "Mozilla/5.0"}

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")

    results = []

    for result in soup.select("div.g"):
        title = result.select_one("h3")
        link = result.select_one("a")

        if title and link:
            results.append({
                "title": title.text,
                "url": link.get("href")
            })

    return results

if __name__ == "__main__":
    keyword = "Python スクレイピング"
    data = get_google_results(keyword)

    for item in data:
        print(item["title"])
        print(item["url"])
        print("=" * 40)

このサンプルプログラムでは、関数化することで再利用性を高めています。キーワードを変更するだけで、さまざまな検索結果を取得できるため、SEO調査やデータ収集の効率化に役立ちます。初心者の方は、まずこのコードをそのまま実行し、その後少しずつカスタマイズしていくことで理解が深まります。

先生と生徒の振り返り会話

生徒

「PythonでGoogle検索結果を取得する流れがだいぶ分かってきました。最初は難しそうに見えたんですが、意外とシンプルですね。」

先生

「そうですね。スクレイピングは一見複雑そうですが、実際は『取得』『解析』『抽出』の3ステップです。この流れを覚えることが大切です。」

生徒

「requestsでページを取って、BeautifulSoupで解析して、selectで欲しいデータを取るんですよね。」

先生

「その通りです。さらにdiv単位でまとめると、データの扱いがより実用的になります。今回のdiv.gのような構造を見つけるのがコツです。」

生徒

「URLの取得もhrefから取るだけなのでシンプルでした。ただ、不要なリンクが混ざるのが少し難しかったです。」

先生

「その点は条件分岐で絞り込むのがポイントです。実務ではさらにフィルタリングやデータ整形も行いますよ。」

生徒

「スクレイピングって色々なサイトに応用できそうですね。ブログ記事の分析とかにも使えそうです。」

先生

「はい、SEO対策や競合分析にも活用できます。ただし、利用規約やマナーを守ることがとても重要です。」

生徒

「まずは今回のコードをしっかり理解して、他のサイトでも試してみます!」

先生

「それが一番の近道です。実際に手を動かして学ぶことで、Pythonスクレイピングのスキルは確実に身につきますよ。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のWebスクレイピングの記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.5
Java&Spring記事人気No5
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
No.8
Java&Spring記事人気No8
Python
PythonのSeabornで美しいデータ可視化を実現する方法!初心者でもわかるグラフ作成入門