34
実践!Web Scraping yoneken(@k_yone)

Tour of Scraping

Embed Size (px)

DESCRIPTION

明日からのWebサーフィンを加速させるスクレイピング技術. スクレイピングという言葉をご存知でしょうか? スクレイピングとは,Web上に散らばった情報をまとめたり加工したりして,Webからの情報収集を効率的に行うための手段のことです. スクレイピングを使いこなすと,人の数百,数千倍の速度でWebで調べものをすることができるようにもなります. 今回は,このスクレイピングという技術について,どのようなものか,誰が使っているのか,どんなことに使えるのか,実際に使うにはどうすればいいのかについて,解説しました.

Citation preview

Page 1: Tour of Scraping

実践!Web Scrapingyoneken(@k_yone)

Page 2: Tour of Scraping

/33

目次

「うぇぶすくれいぴんぐ」って何?

どんなことができるの?

誰が使ってるの?

どうやってやるの? 本日のメイン

2

Page 3: Tour of Scraping

/33

Web Scrapingとは

ウェブサイトから情報を抽出するコンピュータソフトウェア技術.

(Wikipediaより)

Web ・みんな大好き人類の知識の宝庫.

Scrape ・~を削ってきれいにする.

英語では,Web harvestingや,Web data extractionとも.

                                

こと

3

Page 4: Tour of Scraping

/33

どんなことができるの?

Webの情報を,(半)自動的に集めて利用する.

例.

更新前のWebページの状態を保存する.

必要な情報を抽出して読みやすいページに加工する.

複数ページを見やすいように1ページにまとめる.

ページ間のリンク情報から,関連性を数値化する.

4

Page 5: Tour of Scraping

/33

誰がつかってるの?ウェブ魚拓(http://megalodon.jp/)更新前のWebページの状態を保存する.

頻繁に更新されるWebページ(新聞社のページ,個人のブログ等)のスクラップとして利用されている.

5

Page 6: Tour of Scraping

/33

誰がつかってるの?iPhone Safari Reader(http://www.apple.com/jp/safari/features.html#browsing)

必要な情報を抽出して読みやすいページに加工する.

余分な装飾や広告を省いて,読み易く加工している.

6

Page 7: Tour of Scraping

/33

誰がつかってるの?NAVERまとめ(http://matome.naver.jp/)複数ページを見やすいように1ページにまとめる.

異なるWebページに同じ話題が分散している場合に1つにまとめる場合や,ある話題について,Twitter等の個人の反応を同時に掲載する場合に利用されている.

7

Page 8: Tour of Scraping

/33

誰がつかってるの?Google(https://www.google.co.jp/)

ページ間のリンク情報から,関連性を数値化する.

Googleは検索エンジンで上位に表示されるページを決定するため,ページ間のリンク情報から各々のページの重要度を算出している.

8

Page 9: Tour of Scraping

/33

Web Scrapingについてのまとめ

スクレイピングは,Web上の情報を2次利用する技術についての総称.

様々な会社がスクレイピングを利用して,Webブラウジングするのに便利なサービスを提供している.

9

Page 10: Tour of Scraping

/33

問題提起

こんなに便利なスクレイピング.    自分(個人)も使えたら便利じゃない?

10

Page 11: Tour of Scraping

/33

答えそうなんです!

スクレイピングの技術を身につければ,Webからの情報収集の効率が,ケタ違いに上がります.プログラムも駆使すると,人外の域まで到達できます.お手軽にハッカーになったような気分にひたれます(笑) 11

Page 12: Tour of Scraping

/33

スクレイピングの理論

12

コンテンツサーバー

クライアント

HTTPプロトコルwww.google.com のページをちょうだい

はいよ.<!DOCTYPE> (ソース)

さっきのソース中のphoto.jpgをちょうだい

はいよ.        

HTTPプロトコルに沿っている限り,サーバーからは何からのアクセスも同じに見える.

•Webブラウザ•ターミナル•その他のアプリ

Page 13: Tour of Scraping

/33

どうやってやるの?

ブラウザの機能を使う方法.

スクレイピングするWebサービス(マッシュアップサービス)を使う方法.

自前でプログラムを作る方法.

自由度 小

自由度 大

13

Page 14: Tour of Scraping

/33

ブラウザの機能を使ったスクレイピング

印刷.コピー&ペースト.

アドオンを導入する.ソースを直接読む,加工する.

Greasemonkeyを使う.

初級者

中級者

上級者

14

Page 15: Tour of Scraping

/33

ブラウザの機能を使ったスクレイピング初級者編

ブラウザで見ているページは,印刷するとノートに貼ったりマーカーで線を引いたりできます.便利ですね(棒読み).

どこぞのリンク集から,それぞれのページの連絡先をコピー&ペーストでせっせと集めている人がいました.大変そうだなぁ.

このページ,解説なし.15

Page 16: Tour of Scraping

/33

ブラウザの機能を使ったスクレイピング中級者編

アドオンを導入する.

AdBlockというアドオンを導入すると,ブラウジング中のWebページから広告を消せます.

(注)他にも色々な機能を持ったアドオンがあります.

https://chrome.google.com/webstore/detail/adblock/gighmmpiobklfepjocnamgkkbiglidom?hl=ja 16

Page 17: Tour of Scraping

/33

ブラウザの機能を使ったスクレイピング中級者編

ソースを直接読む,加工する.ブラウジング中に右クリックメニューから,「ページのソースを表示」を選ぶことで,表示されているページのソースを見ることができます.

このソースをメモ帳に貼付けて,検索&置換を繰り返すだけでも,けっこうな情報を取り出せます.ツールが導入できないときに有効.

17

Page 18: Tour of Scraping

/33

ブラウザの機能を使ったスクレイピング上級者編

Greasemonkeyを使う.Firefoxのアドオンで,ブラウジング中のWebページに対し,任意のjavascriptを走らせることができ,それによって元のページの機能を拡張します.

走らせるスクリプトは,自分で作ってもいいし,

https://userscripts.org/ などで公開もされています.GreaseFireを使うと,現在のページに対応したスクリプトがあれば教えてくれます.

http://dic.nicovideo.jp/a/greasemonkey 18

Page 19: Tour of Scraping

/33

スクレイピングするWebサービス(マッシュアップサービス)を使う方法.

先に紹介したウェブ魚拓やNAVERまとめの他にも,複数の動画サイトを同じ検索ワードで横断検索したり,各社の旅行サービスを同時に検索して比較したりするWebサービスがあるので,利用してみては.

ちなみに,Twitterのまとめや複数図書館の横断検索は,Web APIという,元のサービスが提供しているAPIを使用しており,生のHTMLを解釈しているわけではないので,一般のWeb Scrapingとはちと違います.

このページ,解説薄し.19

Page 20: Tour of Scraping

/33

なんであんたスクレイピングなんて解説してんの?実は昔,趣味でユーザースクリプトをソーシャルに共有して,端末やOSやブラウザのしがらみなくどこでも使えるようにするWebアプリケーションを作っていたことがありまして・・.結局,そのアプリ自体は全然流行らせられなかったわけですが今もスクレイピングの案件をもらったりします.

閑話休題

20

Page 21: Tour of Scraping

/33

スクレイピング有用な技術なので,世の中にはそのためのライブラリがたくさんあります.

Perl Web::Scraper, WWW::Mechanize, ...

Python Beautiful Soup, Scrapy, PyQuery, ...

Ruby Nokogiri, Mechanize, ...

自前でプログラムを作る方法.

言語処理に秀でたスクリプト言語以外の処理系でスクレイピングのコードを書くのは,あまりお勧めしません.なぜならスクレイピングは本質的にHTML

の言語処理だからです.ヘタな言語を選ぶと,Unicodeの扱いで地獄を見ます.

使ってみた

21

Page 22: Tour of Scraping

/33

スクレイピングの実例

Yahoo financeから,個別銘柄の時系列株価を取得する.

http://stocks.finance.yahoo.co.jp/stocks/history/?code=3765.Q22

Page 23: Tour of Scraping

/33

スクレイピング実装の手順

取得したいモノ(単語,データ,リンク等)を明確にする.

それがHTML中に出現する位置を調べる.

コードを書く.

23

Page 24: Tour of Scraping

/33

スクレイピングの実装手順1

取得したいモノ(単語,データ,リンク等)を明確にする.

ここに並んでいる日付と株価データを取得したい.

24

Page 25: Tour of Scraping

/33

スクレイピングの実装手順2取得したいモノがHTML中に出現する位置を調べる.

1.HTMLソースの中から,該当箇所を見つける.

2.目印となるidやclassのついたタグを見つける

Firebug等のDOM解析ツールを使うと,要素が見つけや

すくなります.

25

Page 26: Tour of Scraping

/33

スクレイピングの実装手順3コードを書く.

Scrapyを使う.選定理由:知らないから使ってみたかった.

hxs = HtmlXPathSelector(response)sites = hxs.select('//table[@class="boardFin yjSt marB6"]/tr')for site in sites[1:]:

1.HtmlXPathSelectorにresponseを渡して,HTML構文解析.2.目印となる要素を示すようにXPathを記述.3.最初の要素はデータ要素名なので,読み飛ばす.

26

Page 27: Tour of Scraping

/33

得られた結果5010行からなる,個別銘柄のデイリー株価CSVデータ.

作成したコードはGitHubに上げてあります( https://github.com/yoneken/finance ).27

Page 28: Tour of Scraping

/33

スクレイピングができるデータ,できないデータ.できるデータ

通常のページ,会員制ページ,httpsのページなどなど・・.

できないデータ

FlashやJava Appletで構成されたページ.28

Page 29: Tour of Scraping

/33

過去に作ったもの1マイクロアレイのデータ解析

Webで公開されているデータベースの活用.菌がもつ全遺伝子中から,既知の刺激に活性化する遺伝子をリストアップする.

29

遺伝子2700弱 × 刺激70弱計189,000通り

微生物系の研究室では,このリストを埋める作業を学生が半年から1年かけてやる.

スクレイピングで10分でできるようにしました(ドヤァ

http://www.bioinformatics.org/sammd/

Page 30: Tour of Scraping

/33

過去に作ったもの2Stirユーザースクリプトをソーシャルに共有する.

•仮想ブラウザの機能を用いて,Web上のコンテンツに対して外部のスクリプトを適用.•ユーザースクリプトの設定は,サーバー上に保存し,端末・OS・ブラウザを越えて利用可能.•未踏ネタ.

30現在は開発休止中.(気が向いたらGoogleAppで最実装したい)

Page 31: Tour of Scraping

/33

まとめスクレイピングはサーバー側からは,通常のブラウジングと同じように見える.

スクレイピングをすると,Web上にあふれる大量の情報を効率的に利用できる.

スクレイピングの実装は,HTMLの構文解析など,多くが手作業で泥臭い技術.

31

Page 32: Tour of Scraping

/33

追補スクレイピングが問題となるケースがある.

32

Librahack事件2010年3月頃に岡崎市立中央図書館の蔵書検索システムにアクセス障害が発生し,利用者の一人が逮捕された事件である.利用者に攻撃の意図はなく,また,根本的な原因が図書館側のシステムの不具合にあったことから論議を呼んだ.(Wikipediaより)

教訓•スクレイピングは,1サイトにつき1[リクエスト/秒]程度を目安に,人のリクエストと同じくらいの頻度で行う.•それでも万一,相手のサイトを落としてしまうと,DoS攻撃とみなされ,業務妨害罪で逮捕される可能性がある.

Page 33: Tour of Scraping

/33

おわりご清聴ありがとうございました.

スクレイピングを使いこなして,一歩進んだWebブラウジングを!

相手のサイトには,迷惑をかけないように気をつけよう☆

33

Page 34: Tour of Scraping

/33

Scrapyを使ってみた感想インストールが必要.

OSにコマンドとして追加される.

Webページをクローリングして,データを吐き出すことに特化.

既存プログラムに組込むような使い方はできなそう.

34