プログラミング

【Python】Google検索結果の取得と「beautifulsoup4」によるスクレイピング

どうも、とがみんです。

この記事では、Pythonを利用して、Google検索し、その結果の記事タイトルとURLを「beautifulsoup4」というライブラリを使用してスクレイピングする方法について説明します。

今回目指すもの

Pythonを使用して、検索クエリを入力し、そのクエリでGoogle検索をした際に得られる結果の記事タイトルとURLを取得し、その一覧を作成します。

以下は「Fresopiya」という検索キーワードで15件取得し、余計なリンクを省いたものです。

実装方法

実装方法について、以下の手順で説明していきます。

  1. 必要なライブラリのインストール
  2. Google検索する際のURL作成しデータを取得
  3. htmlデータのスクレイピング

必要なライブラリのインストール

「requests」と「beautifulsoup4」というライブラリをインストールします。

ターミナルからインストールします。

$ pip install requests
$ pip install beautifulsoup4

request

「requests」は、HTTP通信を行うためのライブラリです。

このライブラリを使用すると、Webサイト等のデータを簡単に取得することができます。

beautifulsoup4

「beautifulsoup4」は、Webサイトを構成しているHTMLファイル等から情報を抽出するために使用するライブラリです。

Google検索する際のURL作成しデータを取得

requestsライブラリをインポートし、URLを作成しリクエストを送ります。

paramsには、検索する際のクエリや、結果の取得件数を指定します。

以下のコードを実行すると、responseに受け取ったデータが格納されます。

クエリは「Fresopia」、取得件数は「5件」にしています。

Google検索におけるパラメーターは他にもたくさんあり、以下の記事にまとめられています。

>Google検索のパラメータ(URLパラメータ)一覧

htmlデータのスクレイピング

次に、受け取ったhtmlデータのスクレイピングをします。

bs4.select(‘.r > a’)は以下の<div class = ‘r’>の中のaタグを取得しています。

そして、以下のコードで、記事タイトルとURLを取り出しています。

このコードを実行すると、以下のような結果になります。

最後に、上記結果のhttpで始まらない画像検索結果を省き、リストにします。

dataListの中身を表示すると以下のようになります。

インポートしているライブラリ「re」に関しては、以下を参考にしてください。


まとめ

PythonでGoogle検索の結果を取得し「beautifulsoup4」で記事タイトルとURLを取得する方法について説明しました。

参考文献

>PythonのrequestsとBeautifulSoupでGoogle検索結果から、タイトルとURLと説明文だけを抜き取る

>[PythonでWebスクレイピングする時の知見をまとめておく