Movatterモバイル変換


[0]ホーム

URL:


Hironori Sekine, profile picture
Uploaded byHironori Sekine
9,458 views

スクレイピングとPython

PyCon mini Hiroshima2015/11/22スクレイピングとPython

Embed presentation

Downloaded 90 times
スクレイピングとPython2015/11/22 関根裕紀PyCon mini Hiroshima
自己紹介• 関根裕紀(せきね ひろのり)• 株式会社SQUEEZE• Twitter: @checkpoint
業務でのPython• ホームシェア(民泊)などの物件の管理、またそれに伴う各種オペレーションを一元的に管理するクラウドサービス を提供(MisterSuite)• 実際の業務ではDjango、Scrapyを使用• エンジニア積極採用中!
Pythonとの関わり(1)• PyCon JP 2014 スタッフ• PyCon JP 2015 プログラムチーム副座長• Pythonもくもく会(主催)
Pythonとの関わり(2)• LLDiver• PyCon JP 2014• Phone Symposium Tokyo 2015• PyCon mini Hiroshima (Today!!)• Pythonエンジニア養成読本(共著)
アジェンダ• Webスクレイピングとは?• PythonでのWebスクレイピング• Webスクレイピングのサンプル紹介
Webスクレイピングとは?Webスクレイピングとは、WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことである。Webスクレイピングを行うことで、Webページを対象として、あたかもWeb APIを利用しているかのようにデータを効率的に取得・収集することが可能になる。用途の例としては、部分的にコンテンツを取り出して携帯電話向けのコンテンツを生成したり、小見出しの一覧を生成したり、といった使い方あある。Webスクレイピングは様々な手段で実現可能であるが、PHPやPerlといったスクリプト言語を使用して行われることが多い。( http://www.sophia-it.com/content/Webスクレイピング ) IT用語辞典より
Webスクレイピング• WebサイトからHTMLのデータを収集• 特定のデータを抽出、加工• 抽出したデータを再利用• クローリング + スクレイピング
クローリング• 英語の意味は、[はう、ゆっくり進む]• Webページのリンクの内容をたどる• Webページの内容をダウンロードして収集• クローラー、スパイダーと呼ばれる
スクレイピング• 英語の意味は、[ 削ること ]• ページの内容から必要な情報を抽出
用途• 検索エンジン• 価格比較• 気象データの監視• サイトの変更検出• Webサイトの情報解析、研究(比較、分類、統計)
Webサービスを使用• kimono ( https://www.kimonolabs.com/ )• import.io ( https://import.io/ )
プログラミング• wget, cURL• Ruby ( Nokogiri、Mechanize)• Perl(Web::Scraper)
Pythonでのスクレイピング• 標準ライブラリ• BeautifulSoup• pyquery• Scrapy• その他
バッテリー付属言語Python
標準ライブラリ• Pythonの標準ライブラリはとても充実• ネットワーク、正規表現、etc• Pythonの処理系だけあれば良い• 簡単なスクレイピングであれば十分実用的
サンプル
サンプル(requests版)
Beautiful Soup• 2004年位から存在するライブラリ• HTMLやXMLからデータを抽出して取得• 最新バーションはBeautiful Soup 4系• Python 2.7、Python 3.2に対応
サンプル
pyquery• jQuery風にHTML/XML操作が可能• パーサーにはlxmlを使用(高速)• JQuery風のセレクタを利用できる
サンプル
Selenium• Webブラウザのオートメーションツール• 実際にブラウザを操作してコンテンツを取得• PhantomJS(ヘッドレスブラウザ)と連携可• JavaScript(Ajax)を利用しているサイトのコンテンツも簡単に取得できる
サンプル
ScrapyScarpyは速くて、ハイレベルなスクレイピングクローラーのフレームワーク。Webサイトのクロールと、構造化されたデータを取り出すのに使用する。幅広い目的に使用できる。データマイニングから、モニタリング、自動テストなど
Scrapy
Scrapyの特徴• クローリング、スクレイピングフレームワーク• Djangoに影響されている(Middlewareなど)• スクレイピングに必要な機能がそろっている• ドキュメントが充実している• Python2.7のみ対応(3にも対応するらしい)
Scrapyの主な機能• ダウンロード、抽出、保存• ダウンロードしたドキュメントのキャッシュ• 強力なコマンドラインシェル• Robots.txtのパース• 非同期、並行ダウンロード(Twistedを使用)• ドメイン、IPアドレス単位のクロール間隔調整• エラー時のリトライ• ログ出力
Scrapyのアーキテクチャhttps://scrapy.readthedocs.org/en/latest/topics/architecture.html
コンポーネント• Scrapy Engine• Scheduler• Downloader• Spiders• Item Pipeline• Downloader middlewares• Spider middlewares
Scrapy Engine• コンポーネント間のデータフローを制御する• 特定のアクションが発生したら、イベントを起こす
Spider• ユーザーが作成するカスタムクラス• 取得したいURL、抽出する項目を記述する• ダウンロードしてコンテンツをスクレイピングして、Itemを作成する
Scheduler• EngineからRequestを受け取り、スケジューリングする
Downloader• 実際にWebページを取得する。• Downloader middlewaresで処理を差し込む事ができる。(キャッシュなど)• Ajaxのコンテンツは、Seleniumでダウンロードさせたりなど、処理の変更も可能。
Item Pipeline• スパイダーによって抽出されたアイテムを出力• データのクレンジング、検証• 永続化(JSON、File、DB、Mail)など
開発手順• Scrapyプロジェクトの作成• Spiderを作成(リンク抽出、ダウンロード)• Itemパイプラインでデータを保存
プロジェクトの作成$ scrapy startproject scrapy_sample
サンプル
Spider作成(公式サイトより)
実行$ scrapy crawl dmoz_spider -o scraped_data.json
サンプル紹介• Airbnbの物件情報をスクレイピング• 京都、沖縄(任意の場所)• 6/27 - 6/28(この期間で宿泊可能な物件)• 20000円以内• 価格の分布図を表示(Web画面)
物件情報
ライブラリ - Scraping• requests (HttpClient)• Beautiful Soup (Scraping)• SqlAlchemy ( O/R Mapper)
ライブラリ - Web• Bottle ( Web Application Framework)• Highcharts ( Graph Library)• SqlAlchemy ( O/R Mapper)
Bottle• 軽量なWebアプリケーションフレームワーク• ルーティング• テンプレートエンジン• HTTPユーティリティ• ビルトインのサーバー
HelloWorld
SQLAlchemy• データベースやSQLに関連する機能を提供するライブラリ• O/Rマッパーは提供される機能のうちの1つ
モデルの定義
レコード作成、検索
デモ
デモ
ソースコード(モデルの定義)
ソースコード(スクレイピング)
ソースコード(クローリング)
ソースコード(Web)
ソースコード(Web)
ソースコード(Web)
まとめ• Pythonでスクレイピングを行う場合、色々なアプローチがある。• 標準のライブラリから、フレームワークまで選択肢は沢山ある。• 実際の要件に合わせて使用すれば良い。
参考資料• 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( 注意事項 )
ご静聴ありがとうございました

Recommended

PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
PDF
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
PPTX
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
PDF
Unityでオンラインゲーム作った話
PDF
正しいものを正しくつくる
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
それはYAGNIか? それとも思考停止か?
PDF
IT系エンジニアのためのプレゼンテーション入門
PPTX
振り返り(アジャイルレトロスペクティブズ)
PDF
ワタシはSingletonがキライだ
PDF
研究の基本ツール
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PDF
推薦アルゴリズムの今までとこれから
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
PPTX
なぜコンピュータを学ばなければならないのか 21世紀の君主論
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
マイクロにしすぎた結果がこれだよ!
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
PPTX
AIと最適化の違いをうっかり聞いてしまう前に
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
大学院進学が切り拓く情報系学生のキャリア
PDF
「PdMと考えるQAとプロダクトマネジメント」
PDF
AWSではじめるMLOps
PPTX
先駆者に学ぶ MLOpsの実際
PDF
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
PPTX
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
PDF
続Pythonによるwebスクレイピング入門
PDF
PythonによるWebスクレイピング入門

More Related Content

PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
PDF
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
PPTX
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
PDF
Unityでオンラインゲーム作った話
PDF
正しいものを正しくつくる
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PDF
それはYAGNIか? それとも思考停止か?
PDF
IT系エンジニアのためのプレゼンテーション入門
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
Unityでオンラインゲーム作った話
正しいものを正しくつくる
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
それはYAGNIか? それとも思考停止か?
IT系エンジニアのためのプレゼンテーション入門

What's hot

PPTX
振り返り(アジャイルレトロスペクティブズ)
PDF
ワタシはSingletonがキライだ
PDF
研究の基本ツール
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PDF
推薦アルゴリズムの今までとこれから
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
PPTX
なぜコンピュータを学ばなければならないのか 21世紀の君主論
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
マイクロにしすぎた結果がこれだよ!
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
PPTX
AIと最適化の違いをうっかり聞いてしまう前に
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
大学院進学が切り拓く情報系学生のキャリア
PDF
「PdMと考えるQAとプロダクトマネジメント」
PDF
AWSではじめるMLOps
PPTX
先駆者に学ぶ MLOpsの実際
PDF
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
PPTX
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
振り返り(アジャイルレトロスペクティブズ)
ワタシはSingletonがキライだ
研究の基本ツール
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
推薦アルゴリズムの今までとこれから
見やすいプレゼン資料の作り方 - リニューアル増量版
なぜコンピュータを学ばなければならないのか 21世紀の君主論
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
マイクロにしすぎた結果がこれだよ!
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
フロー効率性とリソース効率性、再入門 #devlove #devkan
FINAL FANTASY Record Keeperのマスターデータを支える技術
AIと最適化の違いをうっかり聞いてしまう前に
開発速度が速い #とは(LayerX社内資料)
大学院進学が切り拓く情報系学生のキャリア
「PdMと考えるQAとプロダクトマネジメント」
AWSではじめるMLOps
先駆者に学ぶ MLOpsの実際
Visual Dataprepで建築データを美味しく下ごしらえ UNREAL FEST EXTREME 2021 SUMMER
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein

Similar to スクレイピングとPython

PDF
続Pythonによるwebスクレイピング入門
PDF
PythonによるWebスクレイピング入門
PPTX
PythonによるWebスクレイピング勉強会
PDF
Pythonによるwebアプリケーション入門 - Django編-
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL
PPTX
スクレイピングをやってみた
PPTX
Webクローリング&スクレイピングの最前線 公開用
PDF
Lispmeetup #56 Common lispによるwebスクレイピング技法
PDF
Introduction Pycon2010
PDF
スクレイピングのススメ
PDF
オープンデータのためのスクレイピング
PPTX
スクレイピングは避けられない
PDF
Why python
PDF
Why python
PDF
20190202 powerbi scraping
PDF
Python札幌 2012/06/17
続Pythonによるwebスクレイピング入門
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング勉強会
Pythonによるwebアプリケーション入門 - Django編-
ScrapyとPhantomJSを用いたスクレイピングDSL
スクレイピングをやってみた
Webクローリング&スクレイピングの最前線 公開用
Lispmeetup #56 Common lispによるwebスクレイピング技法
Introduction Pycon2010
スクレイピングのススメ
オープンデータのためのスクレイピング
スクレイピングは避けられない
Why python
Why python
20190202 powerbi scraping
Python札幌 2012/06/17

スクレイピングとPython


[8]ページ先頭

©2009-2025 Movatter.jp