Udemyにホームページをカンタンに変更できるElementorの講座を新しくリリースしました。

【Python】違法にならずにGoogle検索結果をPythonで取得する時に考えること-前編

こんにちは 島村竜一です。

毎日行う仕事を効率化したいと思いませんか?

インターネットでダラダラ検索するのは時間の無駄。調べたいことをパッとまとめたら便利だと思いますよね。

「スクレイピング」でサクサクと情報が一覧にまとまったら本当にいいですよね。

今回スクレイピングの技術の調査をする機会があったのでブログにまとめました。

スクレイピングとは

疑問

スクレイピングも随分一般的な言葉になりました。

ウェブスクレイピング(英: Web scraping)とは、
ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。

通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、
もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。

ウェブスクレイピングはユーザーが手動で行なうこともできるが、一般的にはボットやクローラ(英: Web crawler)を利用した自動化プロセスを指す

引用-https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0 ウェブスクレイピング – Wikipedia

Wikipediaさんいわくこのように書かれていますが、


わかりやすく言うとWEBサイトに公開されているテキストや画像、動画などのいろいろな情報から特定の情報をぬきだして、わかりやすくまとめることをWEBスクレイピングもしくはスクレイピング
といいます。

スクレイピングは現在様々な用途に活用されています。

価格のモニタリング、コンテンのキュレーション、Pythonなどの機械学習アルゴリズムの学習用データセットなどに有効活用されています。

今回スクレイピングを学習するきっかけとなったのは

現在クラウドワークスなどで「スクレイピング」の案件が増えていること。
ブログを書く時に効率的にライバル調査がしたいと考えたためです。

今回は実際のスクレイピング方法ではなくてスクレイピングをする時に知っておかないといけないことをまとめました。

実はだめなPythonでGoogle検索結果をスクレイピングする方法

禁止

Pythonでスクレイピングするためにライブラリーというものを追加して行います。
ライブラリーというのはよく使う機能をまとめたプログラムになります。

スクレイピング用ライブラリBeautifulSoup、Seleniumなどがよく使われるようです。

今回実際に島村はSeleniumを使ってプログラムを書いていきました。


from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options
import csv
import datetime

options = Options()

。。。。
結論から言うと30分ぐらいでGoogleで指定した検索結果を取得してEXCELファイルにまとめることができました。

調査している時にわかったのですが技術的にGoogle検索結果をBeautifulSoup、Seleniumをやるのは簡単ですが、Googleの規約上問題があるということです。

もういやだ

自動化されたクエリ

Google の利用規約では、自動化されたクエリはその種類にかかわらず、Google からの明示的な許可を事前に得ることなく Google のシステムに送信することが禁止されています。

リソースの浪費につながる自動化されたクエリの送信には、WebPosition Gold などのソフトウェアを使って自動化されたクエリを Google に送信し、さまざまなクエリによる Google 検索結果におけるウェブサイトやウェブページのランキングを調べようとする行為が含まれます。

ランキングの確認だけでなく、許可を得ていない他の種類の Google への自動アクセスも、ウェブマスター向けガイドラインと利用規約で違反と見なされます。

引用-https://support.google.com/webmasters/answer/66357?hl=ja&fbclid=IwAR2FtVb1JBWS0WTuTRTh2w8RotGOfxBwy1t4ptBxBewEYV2Kw7IStMYhwNI

引用-https://developers.google.com/search/docs/advanced/guidelines/automated-queries?hl=ja

インターネットで「スクレイピング google 検索結果」で検索するとPythonでの実行方法がたくさんヒットします。ですがGoogleさんがGoogleのホームページから検索した結果をスクレイピングするのは規約違反と定めているのでやってはいけません。

島村竜一

せっかく作ったプログラムが無駄になりましたけど。。。

PythonでGoogle検索結果を違法にならずにスクレイピングする方法

安心

ではPythonのプログラムを使ってGoogle検索結果を取得してはいけないのかというと
。。。

ありました。

Google Custom Search APIになります。

Googleの公式サイトはこちら
Google Custom Search JSON API

Googleさんが公式に用意してるGoogleカスタム検索をプログラムを呼び出すためのAPIになります。

Google Custom Search JSON APIを使用するとプログラムからGoogleカスタム検索を呼び出して、検索結果を大量に取得するときに使うことができます。

島村竜一

基本的になにかあった時に責任を取らせられるのは末端の実行者になります。動画、プログラミングで何かあった時に会社が責任をとるのではなく、実行したエンジニアの責任になることは多々あります。自分の身は自分で守るためにもキチンとこういったことは調べておきましょう。

スクレイピングの実行の有無について

疑問

現在社会においてのビジネスにおいてスクレイピングは欠かせないものになっています。
お仕事で関わる人もいるはずです。

関係各所の見解をまとめてみました。

日本の見解

日本

実はなんと総務省がスクレイピングについての資料をまとめています。


「消費者物価指数 (CPI) へ の ウェブスクレイピングの活用について」
https://www.soumu.go.jp/main_content/000654895.pdf

ビッグデータ等の利活用推進に関する産官学協議のための連携会議(第8回)に行われた資料になります。
https://www.soumu.go.jp/main_sosiki/kenkyu/big_data/02toukatsu01_04000328.html

Screenshot

実際にスクレイピングの手順について書かれています。

Screenshot

法的には問題ないというのが総務省の見解のようです。

「多かれ少なかれサイト側のサーバに過度の負荷をかけ、程度を超えてアクセスすると、場合に
よっては、アクセス先のシステムにも何らかの支障を生じるおそれ」のようにあまりやりすぎると問題にはなるようですけど。。

Screenshot

24ページ目の「諸外国におけるウェブスクレイピングの活用状況」は一読する価値ありです。

「アメリカ労働統計局はウェブサイトに対するスクレイピングやAPIの利用は企業からの承諾がなければ実施できないので、フィールドスタッフが電話又は企業を訪問して口頭で承諾を取る予定。」の一文があります。これは2021年の話なのかと突っ込みたくなりますね。

弁護士さんの見解

天秤アイコン1
スクレイピングは違法?3つの法律問題と対応策を弁護士が5分で解説 | TOPCOURT LAW FIRM

スクレイピングは違法?3つの法律問題と対応策を弁護士が5分で解説


上記のページに記述されているように

  • 利用目的
  • スクレイピングの対象
  • アクセス制限の遵守
  • 利用規約

を意識する必要があります。自分の身は自分で守るということを意識しましょう!

著作権法改正-AI開発に向けて-
https://www.soei.com/blog/2019/06/05/%E8%91%97%E4%BD%9C%E6%A8%A9%E6%B3%95%E6%94%B9%E6%AD%A3%EF%BC%8Dai%E9%96%8B%E7%99%BA%E3%81%AB%E5%90%91%E3%81%91%E3%81%A6%EF%BC%8D/

著作権法30条の4第2号も理解しておく必要がありますね。

octoparse(スクレイピング屋さん)の見解

会社

octoparseはPythonなどのプログラミングができなくてもスクレイピングできる機能を提供しているWEBサービスになります。

見解は書いていないのですが、octoparseを使って「Google検索結果をスクレイピングする」方法をホームページに記載しています。

見解は書いていませんがこのチュートリアルに従ってスクレイピングをした場合もちろん問題が発生します。

Google検索結果をスクレイピングする
https://www.octoparse.jp/tutorial/scrape-data-via-google-searching/

島村竜一

octoparseのホームページに記載されているので結構やっている人いそうですね。
なんかあった時に責任を取らされるのはいやなものですね。

Google Custom Search APIについて

コンピューター

さて最後にGoogle Custom Search APIについて注意事項だけまとめておきます。

Pricing
Custom Search JSON API provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console. Additional requests cost $5 per 1000 queries, up to 10k queries per day.

If you need more than 10k queries per day and your Programmable Search Engine searches 10 sites or fewer, you may be interested in the Custom Search Site Restricted JSON API, which does not have a daily query limit.

引用-https://developers.google.com/custom-search/v1/overview


一日あたりのAPI呼び出しは、100回まで無料.
無料枠を超えたらAPIを使って1000回につき5ドル。

ブログを書くだけ、ちょっとした調査だけなら十分に使えますね。

まとめ:PythonでGooGle検索結果を取得したい場合にはGoogle Custom Search APIを使いましょう

まとめ
PythonでGoogle検索結果を取得したいとすると「BeautifulSoup、Selenium」などがGoogle検索結果にひっかかってきます。UdemyにもSeleniumを使ってGoogle検索結果を取得しようという講座があります。わたしも実はこの講座が買ってしまいました。Googleの検索結果以外もいろいろ教えてくれたのでお勧めしたい講座ではありますけど注意する必要はありますね。

技術的には実行可能ですがGoogleさんが禁止しているのでやめましょう。

Google Custom Search APIをぜひ使ってみてください。

後編の記事では実際にGoogle Custom Search APIを使った記事を書きます。

ではまた次のブログでお逢いしましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)