Suche senden
Hochladen
Anemoneによるクローラー入門
•
20 gefällt mir
•
24,458 views
Tasuku Nakano
Folgen
Anemone is ruby gem for crawler. How to use Anemone.
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 66
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
Rubyによるクローラー開発
Rubyによるクローラー開発
しくみ製作所
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
Takuro Sasaki
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
Yukio Saito
Capybaraで雑にWebスクレイピング
Capybaraで雑にWebスクレイピング
Koji Nakamura
Reactjs
Reactjs
しくみ製作所
Crawler Commons
Crawler Commons
chibochibo
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
Empfohlen
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
Rubyによるクローラー開発
Rubyによるクローラー開発
しくみ製作所
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
Takuro Sasaki
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
Yukio Saito
Capybaraで雑にWebスクレイピング
Capybaraで雑にWebスクレイピング
Koji Nakamura
Reactjs
Reactjs
しくみ製作所
Crawler Commons
Crawler Commons
chibochibo
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
Shinsuke Sugaya
MongoDB World 2014に行ってきた!
MongoDB World 2014に行ってきた!
Tetsutaro Watanabe
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
Ryuji Tamagawa
初めてのMongo db
初めてのMongo db
Ryuji Tamagawa
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
20150523
20150523
Toshihiro Suzuki
Node js 入門
Node js 入門
Satoshi Takami
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
sakaik
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
kamiyam .
TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
sakaik
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Akihiro Kuwano
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
JavaScript 研修
JavaScript 研修
Yuki Ishikawa
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
Hironori Miura
Weitere ähnliche Inhalte
Was ist angesagt?
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
Shinsuke Sugaya
MongoDB World 2014に行ってきた!
MongoDB World 2014に行ってきた!
Tetsutaro Watanabe
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
Ryuji Tamagawa
初めてのMongo db
初めてのMongo db
Ryuji Tamagawa
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
20150523
20150523
Toshihiro Suzuki
Node js 入門
Node js 入門
Satoshi Takami
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
sakaik
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
kamiyam .
TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
sakaik
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Akihiro Kuwano
Hello, Node.js
Hello, Node.js
Shin Sekaryo
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
Was ist angesagt?
(20)
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
MongoDB World 2014に行ってきた!
MongoDB World 2014に行ってきた!
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
初めてのMongo db
初めてのMongo db
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
20150523
20150523
Node js 入門
Node js 入門
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
TypeScriptへの入口
TypeScriptへの入口
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
Node.js で Web アプリ開発
Node.js で Web アプリ開発
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Hello, Node.js
Hello, Node.js
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
Ähnlich wie Anemoneによるクローラー入門
JavaScript 研修
JavaScript 研修
Yuki Ishikawa
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
Hironori Miura
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
20140903groonga発表資料
20140903groonga発表資料
Hironobu Saitoh
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
Hironori Sekine
Search on AWS - IVS CTO Night and Day 2016 Spring
Search on AWS - IVS CTO Night and Day 2016 Spring
Eiji Shinohara
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
協調フィルタリング with Mahout
協調フィルタリング with Mahout
Katsuhiro Takata
Word Press on Movable Type
Word Press on Movable Type
Hajime Fujimoto
新しいCspojの紹介
新しいCspojの紹介
Shoichi Yasui
Lab-ゼミ資料-5-20150512
Lab-ゼミ資料-5-20150512
Yuki Ogasawara
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
VirtualTech Japan Inc.
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
DADA246
Ssaw08 1028
Ssaw08 1028
Atsushi Tadokoro
Web本文抽出 using crf
Web本文抽出 using crf
Shuyo Nakatani
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
Fuminori Mori
Excel 方眼紙撲滅委員会 活動報告 2012.11 #odstudy
Excel 方眼紙撲滅委員会 活動報告 2012.11 #odstudy
Takeshi Komiya
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
Shotaro Suzuki
Ähnlich wie Anemoneによるクローラー入門
(20)
JavaScript 研修
JavaScript 研修
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
20140903groonga発表資料
20140903groonga発表資料
Programming camp code reading
Programming camp code reading
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
Search on AWS - IVS CTO Night and Day 2016 Spring
Search on AWS - IVS CTO Night and Day 2016 Spring
Programming camp 2008, Codereading
Programming camp 2008, Codereading
協調フィルタリング with Mahout
協調フィルタリング with Mahout
Word Press on Movable Type
Word Press on Movable Type
新しいCspojの紹介
新しいCspojの紹介
Lab-ゼミ資料-5-20150512
Lab-ゼミ資料-5-20150512
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
Ssaw08 1028
Ssaw08 1028
Web本文抽出 using crf
Web本文抽出 using crf
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
Excel 方眼紙撲滅委員会 活動報告 2012.11 #odstudy
Excel 方眼紙撲滅委員会 活動報告 2012.11 #odstudy
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
Anemoneによるクローラー入門
1.
Anemoneによる クローラー入門 中野 佑
1
2.
About me 中野
佑(ナカノ タスク) こう見えて22歳(新卒1年目) 株式会社フィードフォース エンジニア ※決して怪しい者では ございません 2
3.
参考書 • 「Rubyによるクローラー開発
技法」 • 参考にさせていただきました • 入門から応用までわかりや すく解説が載っていました 3
4.
まずは… 4
5.
クローラーについて 5
6.
クローラー VS スクレイピング
6
7.
スクレイピングとは • Webページを解析してデータを抽出すること
• HTMLを解析(parse)して、データを抽出する • 対象はWebページ1ページ全体 7
8.
クローラーとは • 自動的にWebページのリンクを巡回して情報を
収集するプログラム • 情報を収集する際にはスクレイピングも 行われる • Botなどとも呼ばれる 例:Googleの検索エンジンなど 8
9.
クローラーの機能 1. Webページ全体を見ていく
2. スクレイピングをする 3. 次のリンクを探して、 そのリンク先のWebページへ遷移する 4. 次のリンクがなくなるまで1~3を繰り返す 9
10.
Rubyのライブラリ • Webサイトの読み込み
• open-uri • スクレイピング • nokogiri • Mechanize • クローラー • capybara 10
11.
今回ご紹介するgemは Anemone 11
12.
アネモネ • キンポウゲ科イチリンソウ属
の多年草 • 語源はギリシア語で「風」を 意味するΆνεμος (anemos)から • 花言葉は「はかない夢」 12
13.
アネモネ • キンポウゲ科イチリンソウ属
の多年草 • 語源はギリシア語で「風」を 意味するΆνεμος (anemos)から • 花言葉は「はかない夢」 13
14.
Anemone • Ruby製のクローラーgem
• 階層をたどる、sleep機能 など基本的な機能を網羅 ※画像は特に意味はありません 14
15.
Anemone • 基本的な使い方
1. #crawlに、クロールしたい始点URLをセット 2. 更にオプションも渡す 3. ブロック引数を指定して、ページごとに処理を したり、巡回先を絞り込んだりする 15
16.
.crawlのオプション • 第一引数にURLを指定(複数指定は配列で)
• :depth_limit • 階層の深さを指定 • :skip_query_string • URLパラメータを無視するかを指定 16
17.
他にも • :proxy_host,
:proxy_port • プロキシサーバの設定 • :user_agent • ユーザエージェントを指定 • :delay • アクセス間隔を指定(秒) 17
18.
ページに対する処理 • .on_every_page
• すべてのページに対して処理を行う • .on_pages_like • ページを指定して処理を行う • 正規表現で指定する 18
19.
実際にクローリング してみる 19
20.
クロール対象 20
21.
Webページ全てのURLを取得 21
22.
正規表現で絞り込む 22
23.
URLだけじゃなくて タイトルもほちぃ 23
24.
スクレイピング~ 24
25.
スクレイピングする上 で大事なのが… 25
26.
HTMLの構造を 理解すること! 26
27.
HTMLの構造を理解する • スクレイピングでクラス名やタグ、id名など
を指定してデータを取得することが可能 • 正規表現で取ってくることもできる 27
28.
正規表現なんて、 やってられない! 28
29.
CSSからもっと簡単 に! 29
30.
必要な情報を探したい • XPathを使う方法
• CSSセレクタを使う方法 • Nokogiri::XML::Nodeを理解する必要がある 30
31.
XPath • HTMLをXML文書として、階層構造で特定部分
を示すための構文 • 一番近いHTMLのルートの階層から始まる • 例: 「//*[@id="content"]/article/div[1]/h1」 31
32.
XPathの取得方法 32
33.
XPathを取得した!▼ 33
34.
body内のid名 34
35.
1番目のarticleタグ 35
36.
article内のdivタグ 36
37.
目的のh1タグ 37
38.
Nodeについての話 の前に… 38
39.
Nokogiri::HTML::parse について 39
40.
parseの挙動 • URLを受け取って解析をしたあと、
Nokogiri::HTML::Documentクラスの オブジェクトを返します • 以下の継承関係にあります • Nokogiri::HTML::Document • Nokogiri::XML::Document • Nokogiri::XML::Node 40
41.
余談 • Nokogiri::parseメソッドでは受け取った値が
HTMLか、XMLかを自動判定して、 よしなに適したメソッドに渡す • しかし、誤判定もあるため、推奨されていない 41
42.
Nokogiri::XML::Node • NokogiriのXML::Documentから得られる
検索系のメソッド • Nokogiri::XML::Nodeの挙動とメソッドを 覚えることが大事 • 要素の操作や検索時の機能を有している • XPathやCSSの検索機能もここに実装されて いる 42
43.
Node vs NodeSet
• 共通のメソッドが多く、挙動が似ている • 違いを理解していないと、メソッドがないな どのエラーが出ることも • 検索系のメソッドはNodeと同じ名前で内部的 にNodeを呼び出していることも多い • NodeSetはNodeを格納したリスト型配列 43
44.
細かいメソッドなどは 本を読んでね☆ 44
45.
やっと本題に戻って 解析してみる 45
46.
見出し一覧を 取得したい 46
47.
47 3つの記事を 対象
48.
見出しはh2タグ 48
49.
XPathを取得した!▼ 49 ここがほちぃ
50.
対象を絞りこみ 50
51.
スクレイピング 51
52.
結果 52
53.
実際にはClassを確認 しながら実装すると良いです 53
54.
最後にひとつだけ 54
55.
クローリングする上で のルール 55
56.
注意 • クローラーで収集したデータをそのまま公開
すると著作権違反になります • 頻繁にアクセスをしてしまうと、 攻撃とみなされることもあります 56
57.
ルールブック 57
58.
robots.txt • 記述方式
• User-agent: 拒否したいUA • Allow: クロールの可能なページのパス • Disallow: クロールされたくないページのパス • Crawl-delay: クロール間隔(単位はあやふや) • rubyには、robotexがある • https://github.com/chriskite/robotex 58
59.
robots.txt一覧 • Amazon
• http://www.amazon.com/robots.txt • はてなブログ • http://hatenablog.com/robots.txt • Wikipedia • http://ja.wikipedia.org/robots.txt 59
60.
みんなで守ろう! 60
61.
おまけ 61
62.
クローラーの効率化 62
63.
クローラーの高速化 • 並列化する
• cosmicrawlerというgemがある • まだ試せてないので割愛 63
64.
クローラーの使い道 64
65.
使い道 • 天気予報サイトから天気を取得
• ラズパイで毎朝天気を教えるものを作るとか • 週刊誌の発売日一覧を取得する • 株価の変動状況を取得する • 新刊情報を取得する 65
66.
以上です。 66
Jetzt herunterladen