Your SlideShare is downloading. ×
0
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

続Pythonによるwebスクレイピング入門

224

Published on

続Pythonによるwebスクレイピング入門

続Pythonによるwebスクレイピング入門

Published in: Engineering
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
224
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 続PythonによるWeb スクレイピング入門 関根裕紀
  • 2. 自己紹介 • 関根裕紀(せきね ひろのり) • アライドアーキテクツ株式会社 • ソフトウェア・エンジニア • マーケティングを支援するサービスの開発 • 新卒メンバー、若手メンバーの教育支援 • Twitter: @checkpoint
  • 3. Pythonとの関わり • PyCon JP スタッフ (2014, 2015) • Pythonエンジニア養成読本(Web開発) • スピーカー • AWDD • LLDiver • PyCon JP 2014 • Phone Symposium Tokyo 2015
  • 4. Pythonもくもく会(毎月)
  • 5. アジェンダ • Webスクレイピングとは? • PythonでのWebスクレイピング • Webスクレイピングのサンプル紹介
  • 6. Webスクレイピングとは? Webスクレイピングとは、WebサイトからWebページのHTMLデータを収 集して、特定のデータを抽出、整形し直すことである。 Webスクレイピングを行うことで、Webページを対象として、あたかも Web APIを利用しているかのようにデータを効率的に取得・収集すること が可能になる。用途の例としては、部分的にコンテンツを取り出して携帯 電話向けのコンテンツを生成したり、小見出しの一覧を生成したり、といっ た使い方あある。Webスクレイピングは様々な手段で実現可能であるが、 PHPやPerlといったスクリプト言語を使用して行われることが多い。 ( http://www.sophia-it.com/content/Webスクレイピング ) IT用語辞典より
  • 7. Webスクレイピング • WebサイトからHTMLのデータを収集 • 特定のデータを抽出、加工 • 抽出したデータを再利用 • クローリング + スクレイピング
  • 8. クローリング • 英語の意味は、[はう、ゆっくり進む] • Webページのリンクの内容をたどる • Webページの内容をダウンロードして収集 • クローラー、スパイダーと呼ばれる
  • 9. スクレイピング • 英語の意味は、[ 削ること ] • ページの内容から必要な情報を抽出すること
  • 10. 用途 • 検索エンジン • 価格比較 • 気象データの監視 • サイトの変更検出 • Webサイトの情報解析、研究(比較、分類、統計など) • マッシュアップ
  • 11. 方法(1) • Webサービス、アプリケーション • Yahoo! Pipes( https://pipes.yahoo.com/ ) • kimono ( https://www.kimonolabs.com/ ) • import.io ( https://import.io/ )
  • 12. 方法(2) • Ruby • Nokogiri • Mechanize • Perl • Web::Scraper • JavaScript • CasperJS
  • 13. Pythonでのスクレイピング • 標準ライブラリ • BeautifulSoup • pyquery • Scrapy • その他
  • 14. Python バッテリー付属言語
  • 15. 標準ライブラリ • Pythonの標準ライブラリは充実している • ネットワーク、正規表現、etc • Pythonの処理系だけあれば良い • 簡単なスクレイピングであれば十分実用的
  • 16. サンプル
  • 17. Beautiful Soup • 2004年位から存在するライブラリ • HTMLやXMLからデータを抽出して取得できる • 複数のパーサーに対応、パーサーを指定できる • 最新バーションはBeautiful Soup 4系 • Python 2.7、Python 3.2に対応
  • 18. サンプル
  • 19. 実行結果
  • 20. pyquery • jQuery風にHTML/XML操作が可能 • パーサーにはlxmlを使用 • JQuery風のセレクタを利用できる
  • 21. サンプル
  • 22. 実行結果
  • 23. Scrapy Scarpyは速くて、ハイレベルなスクレイピング クローラーのフレームワーク。Webサイトのク ロールと、構造化されたデータを取り出すのに 使用する。幅広い目的に使用できる。データマ イニングから、モニタリング、自動テストなど
  • 24. Scrapy
  • 25. Scrapyの特徴 • クローリング、スクレイピングフレームワーク • シンプル、拡張性がある • バッテリー付属 • ドキュメント、テストが充実 • コミュニティが活発 • Python2.7のみ対応
  • 26. Scrapyの主な機能 • Webページからの情報抽出 • Robots.txtのパース • ドメイン、IPアドレス単位のクロール間隔調整 • 並行処理 • エラー時のリトライ(回数を設定) http://orangain.hatenablog.com/entry/scrapy
  • 27. Scrapyのアーキテクチャ https://scrapy.readthedocs.org/en/latest/topics/architecture.html
  • 28. コンポーネント • Scrapy Engine • Scheduler • Downloader • Spiders • Item Pipeline • Downloader middlewares • Spider middlewares
  • 29. Scrapy Engine • コンポーネント間のデータフローを制御する • 特定のアクションが発生したら、イベントを 起こす
  • 30. Spider • ユーザーが作成するカスタムクラス • 取得したいURL、抽出する項目を記述する • ダウンロードしてコンテンツをスクレイピン グして、Itemを作成する
  • 31. Scheduler • EngineからRequestを受け取り、スケジュー リングする
  • 32. Downloader • 実際にWebページを取得する。 • Downloader middlewaresで処理を差し込む 事ができる。(キャッシュなど)
  • 33. Item Pipeline • スパイダーによって抽出されたアイテムを出力 • データのクレンジング、検証 • 永続化(JSON、File、DB、Mail)など
  • 34. 手順 • Scrapyプロジェクトの作成 • 抽出するアイテムの定義 • アイテムの抽出とクローリングのためのSpiderを作成 • 抽出したアイテムのパイプライン処理の作成 • 基本はSpiderとItem部分を書いていく
  • 35. サンプル
  • 36. プロジェクトの作成 $ scrapy startproject scrapy_sample
  • 37. 抽出するItem定義 $ vi items.py
  • 38. Spider作成 $ vi spiders/mininova.py
  • 39. 実行 $ scrapy crawl mininova -o scraped_data.json
  • 40. サンプル紹介 • Airbnbの物件情報をスクレイピング • 京都、沖縄(任意の場所) • 6/27 - 6/28(この期間で宿泊可能な物件) • 20000円以内 • 価格の分布図を表示(Web画面)
  • 41. 物件情報
  • 42. ライブラリ - Scraping • requests (HttpClient) • Beautiful Soup (Scraping) • SqlAlchemy ( O/R Mapper)
  • 43. ライブラリ - Web • Bottle ( Web Application Framework) • Highcharts ( Graph Library) • SqlAlchemy ( O/R Mapper)
  • 44. Bottle • 軽量なWebアプリケーションフレームワーク • ルーティング • テンプレートエンジン • HTTPユーティリティ • ビルトインのサーバー
  • 45. HelloWorld
  • 46. SQLAlchemy • データベースやSQLに関連する機能を提供す るライブラリ • O/Rマッパーは提供される機能のうちの1つ
  • 47. モデルの定義
  • 48. レコード作成、検索
  • 49. デモ
  • 50. デモ
  • 51. ソースコード(モデルの定義)
  • 52. ソースコード(スクレイピング)
  • 53. ソースコード(クローリング)
  • 54. ソースコード(Web)
  • 55. ソースコード(Web)
  • 56. ソースコード(Web)
  • 57. まとめ • Pythonでスクレイピングを行う場合、色々な アプローチがある。 • 標準のライブラリから、フレームワークまで 選択肢は沢山ある。 • 実際の要件に合わせて使用すれば良い。
  • 58. 参考資料 • http://scrapy.org ( Scrapy ) • http://www.slideshare.net/MasayukiIsobe/web-scraping-20140622isobe • https://github.com/gawel/pyquery/ ( pyquery ) • http://www.crummy.com/software/BeautifulSoup/ ( BeautfulSoup ) • http://orangain.hatenablog.com/entry/scrapy • http://akiniwa.hatenablog.jp/entry/2013/04/15/001411 • http://tokyoscrapper.connpass.com/ ( Webスクレイピング勉強会 ) • http://www.slideshare.net/nezuQ/web-36143026?ref=http://www.slideshare.net/ slideshow/embed_code/36143026 • http://qiita.com/nezuq/items/c5e827e1827e7cb29011( 注意事項 )
  • 59. 宣伝 • PyCon JP 2015( https://pycon.jp/2015/ ) • 10月9日(金) - 10月12日(月) • トークセッションの募集中 • チュートリアル講師も募集中
  • 60. ご静聴ありがとうございました

×