Pythonを使ってGoogleをスクレイピングする方法

ハウツー, パイソン, スクレイピング, 11月-1520225分で読める

インターネット上の情報検索において、グーグルはあらゆる検索エンジンの中で最大のプレーヤーである。推計によると、毎日35億回以上の検索がグーグル検索で行われている。私たち(グーグルユーザー)には、グーグル・アナリティクスとグーグル広告に基づく一定の情報しか与えられていない。グーグルはAPIを使用している

目次

グーグルは、インターネット上での情報検索に関しては、すべての検索エンジンの中で最大のプレーヤーである。推計によると、毎日35億回以上の検索がグーグル検索で行われている。私たち(グーグルユーザー)には、グーグル・アナリティクスとグーグル広告に基づく一定の情報しか与えられていない。グーグルはAPI(アプリケーション・プログラミング・インターフェース)を使い、基本的にリサーチとランキングに基づいて私たちにとって最も価値のある情報を選んでいる。しかし、あなたにとって本当に価値のある情報が何なのか、もう少し掘り下げてみたいとしたらどうだろう? 

ここでスクレイピングの必要性が出てくる。グーグル・スクレイパーは、本の中で最も重要な章をハイライトする方法だと考えることができる。情報を得るために教科書をスキャンするとき、あなたは研究やテストに最も価値のあるテキストを選びがちだ。しかし、ワールド・ワイド・ウェブは1000ページの本よりも大きい。だから、インターネットの場合、グーグル・スクレーパーは、あなたが疑問に思っているトピックに関するトップ結果を即座につかみ、収集する、あなたのレーザーを当てる目になることができる。特定のキーワードに基づいてGoogleの検索結果を抽出することができます。例えば、「ライオン」というキーワードでグーグルをスクレイピングすると、グーグル・ウェブ・スクレイパーは、そのキーワードに基づいた一定数のトップクラスのURLを教えてくれる。キーワードが多ければ多いほど、グーグルはより具体的なURLとデータを提供してくれる。より具体的なデータであればあるほど、よりあなたの要求に合ったものになる。しかし、まずはグーグルをスクレイピングする必要性を理解しよう。

なぜGoogleをスクレイピングする必要があるのか?

Googleが何十億もの人々にとってインターネットへの主要な入り口であり、ほとんどすべてのビジネスがGoogle検索結果に表示されることを望んでいることはご存知でしょう。Googleの評価やレビューは、ローカルビジネスのオンラインプロフィールに大きな影響を与えます。異なる業界から多くのクライアントを持つマーケティングエージェンシーは、信頼性の高いSEO(検索エンジン最適化)ツールの入手に大きく依存しています。SEOツールは、様々なタスクを効果的に実行するための手段であり、結果をうまく管理・分析するための手段でもある。 

以下は、グーグル・スクレイピングの使用例である。

  • 指定したキーワードの広告を分析できる。
  • オーガニック結果と有料結果の両方で競合を監視することができます。
  • 特定のキーワードのURLリストを作ることができる。 

企業がグーグルをスクレイピングする必要があるのは、次のような理由からである。

  • 検索エンジン最適化(SEO) - Googleのスクレイピングは、Googleの検索結果ページで自社のウェブサイトページがどれだけ上位に表示されているかを示し、どのページでどれだけのキーワードが使用されているかを垣間見ることができる。キーワードが多ければ多いほど、そのページは上位に表示される。そのため、SEOの活用方法を理解することで、高い競争力を維持することができます。
  • マーケティング - アマゾンのロゴが画面に表示されればされるほど、買い物をするときにアマゾンに向かう可能性が高くなる。グーグル・スクレイピングは、競合他社がどのように商品を宣伝しているのか、どのような商品を選んで宣伝しているのか、それらの商品に対する顧客の反応はどうなのか、といったデータを収集するのに役立つ。 
  • 競争力のある販売戦術 - グーグル・スクレイピングは、御社がより競争力のある販売戦術を構築するのに役立ちます。もし御社が特定の検索結果ページで下位にランクインしていれば、御社の特定の製品がなぜ成功していないのかがわかるかもしれません。スクレイピングは競合他社に差をつけ、この世界で競争力をつける新しい方法を提供します。 

Pythonを使ったGoogleのスクレイピング

Pythonを使ってGoogleをスクレイピングする方法を見てみよう。

インストール

まず、偽のuseragentをインストールする必要がある。これは実際のデータベースを持つ最新のuseragentを取得する。

pipinstallfake-useragent

ライブラリのインポート

以下のように、必要なライブラリをすべてインポートする必要がある。

pandas を pdとして インポートする
npとしてnumpy をインポートする
インポートurllib
fromfake_useragentimportUserAgent
インポートリクエスト
インポートre
fromurllib.requestimportRequest, urlopen
frombs4importBeautifulSoup

キーワードを使う

キーワードと検索結果の数を使ってGoogle URLを作成する必要があります。そのために2つのステップを踏む:

urllibを使ってキーワードをHTMLにエンコードするURLにidを追加する。

キーワードは "機械学習パイソン "だろう。

keyword="機械学習 python"
html_keyword= urllib.parse.quote_plus(keyword)
プリント(html_keyword)

キーワードをプリントアウトすると、次のような結果になる。

Google URLを作成する

urllibを使ってキーワードをHTMLにエンコードした後、以下のようにGoogle URLを構築しなければならない。

結果の数=15
google_url="https://www.google.com/search?q="+html_keyword+"&num="+str(number_of_result)
print(google_url)

以下のURLを取得する:

結果を出す

さて、URLを叩いて結果を得なければならない。そのためには、Beautiful Soupと Fake Useragentが役に立つ。

ua = UserAgent()
response = requests.get(google_url, {"User-Agent": ua.random})
soup = BeautifulSoup(response.text, "html.parser")

欲しい情報を抽出するために必要なのは正規表現だけだ。

result = soup.find_all('div', attrs = {'class': 'ZINbbc'})
results=[re.search('\/url\?q\=(.*)\&sa',str(i.find('a', href = True)['href'])) for i in result if "url" in str(i)]
#this is because in rare cases we can't get the urls
links=[i.group(1) for i in results if i != None]
links

これがその結果だ。

これがPythonを使ってGoogleをスクレイピングする方法だ。 

また、以下のように、上記のコードをひとつのスクレイパー関数にまとめることもできる。

def google_results(keyword, n_results):
    query = keyword
    query = urllib.parse.quote_plus(query) # Format into URL encoding
    number_result = n_results
    ua = UserAgent()
    google_url = "https://www.google.com/search?q=" + query + "&num=" + str(number_result)
    response = requests.get(google_url, {"User-Agent": ua.random})
    soup = BeautifulSoup(response.text, "html.parser")
    result = soup.find_all('div', attrs = {'class': 'ZINbbc'})
    results=[re.search('\/url\?q\=(.*)\&sa',str(i.find('a', href = True)['href'])) for i in result if "url" in str(i)]
    links=[i.group(1) for i in results if i != None]
    return (links)

ここでgoogle_resultsはスクレイパー関数で、キーワードと結果の数をパラメータとして渡し、グーグルのURLを構築する。

google_results('machine learning in python',10)

これがその結果だ。

プロキシの使用

Google Ads APIに接続したい場合は?以下のようにgoogle-ads.yamlファイルにhttp_proxyを設定することで、プロキシ経由で接続することができます。

http_proxy:ここにプロキシを挿入する

プロキシとして http://user:pass@localhost:8082 を指定することができます。また、GoogleAdsClientのメソッドを使用して、プロキシ設定をプログラムで行うこともできます:

  • ロード・フロム・ディクト
  • ロードフロムエンブ
  • ロードフロム文字列

例えば、こうだ、 

config = {
  ...
  "http_proxy": "INSERT_PROXY_HERE",
}
googleads_client = GoogleAdsClient.load_from_dict(config)

load_from_envメソッドからプロキシを使用するには、GOOGLE_ADS_HTTP_PROXY環境変数を設定する必要があります。

なぜGoogleプロキシを使うのか?

Googleプロキシを使用する理由は以下の通りです。

  • 高速でユニークな結果を得る - Googleを含むすべての検索エンジンは、結果を抽出するために自動化されたソフトウェアを使用することを嫌う。あるIPアドレスから複数の検索問い合わせがあった場合、そのIPアドレスをブロックし、いかなるデータにもアクセスできないようにします。そのため、ユニークな専用プライベートプロキシがあれば、Googleの検索結果を抽出するための自動化ソフトウェアを使用できるだけでなく、非常に高速にデータを取得することができます。
  • プライバシーの保護-Googleプロキシは、あなたの元のIPアドレスが安全かつセキュアであることを保証し、ハッキングの試みを受けることはありません。また、コンピュータ内の機密情報を安全な場所に保管することができます。
  • 自動化 - 高品質のプロキシを使用することで、自動化ソフトウェアが正しく機能します。

結論

Pythonを使って Googleをスクレイピングすることができる:

  • 競合分析
  • リンク構築
  • ソーシャル・プレゼンスを強調する
  • 検索キーワード

Googleからデータをスクレイピングする際、プロキシは企業の検索エンジンでのランキングを上げたり、インターネットIPがブロックされるのを防いだりするのに役立つため、不可欠である。Googleのスクレイピングには、専用のプロキシを一括して使用することができ、非常に高速にデータを取得することができます。

Pythonを使ってGoogleをスクレイピングする方法をご理解いただけたでしょうか?