3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プログラミング初心者がスクレイピングについて調べてみた

Last updated at Posted at 2021-12-23

導入

学校のIoT実習で学んだことを生かし、いろいろ便利なものを作ってみたいと思ったのだが、調べていくうちに、スクレイピングということをすると、Webサイトから簡単に情報が集められるということを知った。
しかし、サイトによってはこれが許可されていないなどの事もあるようで、今回はスクレイピングとは何か、注意点は何かについて調べたことをまとめていく。

スクレイピングとは?

スクレイピングとは、Webサイトから情報(データ)を取得し、その中から、自分が必要とするデータを抽出することである。(特にこれをWebスクレイピングという)

スクレイピングは手作業ではかなり大変であるが、これをプログラムで自動化すると、例えば、サイト上にある株価などの統計情報を自動で取得し、競合分析などのデータ解析に用いたり、機械学習に必要になるような膨大なデータを自動で集めたりなど、Webサイト上にあるデータを簡単に扱うことができるようになる。

例えば電車の運行情報の中で、京阪線のものが欲しいとする。
Webサーバー側にリクエストを送信し、いくつかの路線に関するレスポンスのデータが返ってくるが、この複雑なデータの中から、スクレイピングを行うことで欲しいデータだけを抽出できる。
(※イメージです)
無題213_20211224125817.png

スクレイピングの注意点

一見すると便利なスクレイピングであるが、実際行うときは注意点がいくつかある。

逮捕や裁判沙汰になるようなケースもあるため、特に気を付けること。

相手側のサーバーに負荷を掛けない事

スクレイピングは相手のサーバーに入り込んで、データを取ってくるということです。つまり、短時間何回もスクレイピングを行うと、相手側のサーバーに負荷を掛け、サーバーをダウンさせることにつながる。

スクレイピングが許可されているか確認すること

Webサイトによっては許可されていないことがある。どうやって確認すればいいのかは以下に示す。

確認方法

相手のWebサイトのルートディレクトリ(簡単に言えば.comとか.jpとかのドメイン名直下)にある、「robot.txt」及び「robots.txt」にアクセスして、許可情報を調べる。
例としてYahoo!乗換案内を使用する。

  1. ブラウザでページを開き、アドレスバーにあるURLの後ろに「/robots.txt」または「/robot.txt」を追加する。
https://transit.yahoo.co.jp/robots.txt

無題211_20211223232145.png

  1. おそらくこのようなものが表示される
Sitemap: https://transit.yahoo.co.jp/sitemap/index.xml
Sitemap: https://transit.yahoo.co.jp/sitemap/navi_index_01.xml
Sitemap: https://transit.yahoo.co.jp/sitemap/navi_index_02.xml
Sitemap: https://transit.yahoo.co.jp/sitemap/navi_index_03.xml
Sitemap: https://transit.yahoo.co.jp/sitemap/navi_index_04.xml
Sitemap: https://transit.yahoo.co.jp/sitemap/navi_index_05.xml
User-agent: *
Disallow: /*.xap$
Disallow: /*.png$
Disallow: /*.dat$
Disallow: /diaedit
Disallow: /stedit
Disallow: /edit
Disallow: /search$
Disallow: /diainfo/detail$
Disallow: /main/top$
Disallow: /search/result$
Disallow: /search/result
Disallow: /feedback
Disallow: /channel.html
Allow: /search/result?*&type=5&*
Allow: /search/result/

書かれている中で、Disallowとなっている部分がアクセス禁止の部分になっており、この部分はスクレイピングできない。

無題212_20211223232711.png

(SitemapとUser-agentは今は気にしなくてもいい)

robot.txtまたはrobots.txtが見つからない場合

ページの利用規約や、ヘルプをよく読むこと。Yahoo!ファイナンスなど、robot.txtがなくてもスクレイピングが禁止されていることもある。

余談

「robot.txt」及び「robots.txt」について

これらは、Webブラウザ側が収集されたくないデータを制御するファイルで、主に

  • User-Agent
  • Disallow
  • Allow
  • Sitemap

の4つの要素から構成されている。役割はそれぞれ

  • User-Agent:誰からのアクセスを拒否するかを指定する要素
  • Disallow:指定されたファイルへのアクセスをブロックする要素
  • Allow:指定されたファイルへのアクセスを許可する要素
  • Sitemap:サイトマップの場所をアクセスした人に伝える要素

となっている。

参考文献

画像出典

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?