Submit Search
スクレイピングとPython
38 likes
9,440 views
Hironori Sekine
PyCon mini Hiroshima 2015/11/22 スクレイピングとPython
Technology
Read more
1 of 61
Download now
Downloaded 88 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
More Related Content
What's hot
(20)
PDF
ChatGPTは思ったほど賢くない
Carnot Inc.
PPTX
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
Tokoroten Nakayama
PDF
プロジェクトマネジメントは仕組み化が9割
Mharu
PDF
Power BI データフロー 早わかり
Takeshi Kagata
PDF
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
PDF
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
PDF
ドメイン駆動設計 基本を理解する
増田 亨
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
PDF
Azure ADとIdentity管理
Naohiro Fujie
PDF
ナレッジグラフ入門
KnowledgeGraph
PPTX
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
PDF
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
Yoshiki Hayama
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PPTX
イベント・ソーシングを知る
Shuhei Fujita
ODP
Guide To AGPL
Mikiya Okuno
PDF
MQTTとAMQPと.NET
terurou
PDF
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PDF
モデリングもしないでアジャイルとは何事だ
Iwao Harada
PDF
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ChatGPTは思ったほど賢くない
Carnot Inc.
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
Tokoroten Nakayama
プロジェクトマネジメントは仕組み化が9割
Mharu
Power BI データフロー 早わかり
Takeshi Kagata
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
ドメイン駆動設計 基本を理解する
増田 亨
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
Azure ADとIdentity管理
Naohiro Fujie
ナレッジグラフ入門
KnowledgeGraph
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
Yoshiki Hayama
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
イベント・ソーシングを知る
Shuhei Fujita
Guide To AGPL
Mikiya Okuno
MQTTとAMQPと.NET
terurou
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
モデリングもしないでアジャイルとは何事だ
Iwao Harada
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Similar to スクレイピングとPython
(16)
PDF
続Pythonによるwebスクレイピング入門
Hironori Sekine
PDF
PythonによるWebスクレイピング入門
Hironori Sekine
PPTX
PythonによるWebスクレイピング勉強会
淳子 土肥
PDF
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
PPTX
スクレイピングをやってみた
憲 山本
PPTX
Webクローリング&スクレイピングの最前線 公開用
Lumin Hacker
PDF
Lispmeetup #56 Common lispによるwebスクレイピング技法
Satoshi imai
PDF
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
PDF
スクレイピングのススメ
Tomoki Hasegawa
PDF
オープンデータのためのスクレイピング
直之 伊藤
PPTX
スクレイピングは避けられない
Daiki Kojima
PDF
Why python
TeppeiAkada1
PDF
Why python
TeppeiAkada1
PDF
20190202 powerbi scraping
良一 駒板
PDF
Python札幌 2012/06/17
Shinya Okano
続Pythonによるwebスクレイピング入門
Hironori Sekine
PythonによるWebスクレイピング入門
Hironori Sekine
PythonによるWebスクレイピング勉強会
淳子 土肥
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
スクレイピングをやってみた
憲 山本
Webクローリング&スクレイピングの最前線 公開用
Lumin Hacker
Lispmeetup #56 Common lispによるwebスクレイピング技法
Satoshi imai
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
スクレイピングのススメ
Tomoki Hasegawa
オープンデータのためのスクレイピング
直之 伊藤
スクレイピングは避けられない
Daiki Kojima
Why python
TeppeiAkada1
Why python
TeppeiAkada1
20190202 powerbi scraping
良一 駒板
Python札幌 2012/06/17
Shinya Okano
Ad
Recently uploaded
(10)
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
Ad
スクレイピングとPython
1.
スクレイピングと Python 2015/11/22 関根裕紀 PyCon mini
Hiroshima
2.
自己紹介 • 関根裕紀(せきね ひろのり) •
株式会社SQUEEZE • Twitter: @checkpoint
3.
業務でのPython • ホームシェア(民泊)などの物件の管理、ま たそれに伴う各種オペレーションを一元的に 管理するクラウドサービス を提供(Mister Suite) •
実際の業務ではDjango、Scrapyを使用 • エンジニア積極採用中!
5.
Pythonとの関わり(1) • PyCon JP
2014 スタッフ • PyCon JP 2015 プログラムチーム副座長 • Pythonもくもく会(主催)
6.
Pythonとの関わり(2) • LLDiver • PyCon
JP 2014 • Phone Symposium Tokyo 2015 • PyCon mini Hiroshima (Today!!) • Pythonエンジニア養成読本(共著)
7.
アジェンダ • Webスクレイピングとは? • PythonでのWebスクレイピング •
Webスクレイピングのサンプル紹介
8.
Webスクレイピングとは? Webスクレイピングとは、WebサイトからWebページのHTMLデータを収 集して、特定のデータを抽出、整形し直すことである。 Webスクレイピングを行うことで、Webページを対象として、あたかも Web APIを利用しているかのようにデータを効率的に取得・収集すること が可能になる。用途の例としては、部分的にコンテンツを取り出して携帯 電話向けのコンテンツを生成したり、小見出しの一覧を生成したり、といっ た使い方あある。Webスクレイピングは様々な手段で実現可能であるが、 PHPやPerlといったスクリプト言語を使用して行われることが多い。 ( http://www.sophia-it.com/content/Webスクレイピング
) IT用語辞典より
9.
Webスクレイピング • WebサイトからHTMLのデータを収集 • 特定のデータを抽出、加工 •
抽出したデータを再利用 • クローリング + スクレイピング
10.
クローリング • 英語の意味は、[はう、ゆっくり進む] • Webページのリンクの内容をたどる •
Webページの内容をダウンロードして収集 • クローラー、スパイダーと呼ばれる
11.
スクレイピング • 英語の意味は、[ 削ること
] • ページの内容から必要な情報を抽出
12.
用途 • 検索エンジン • 価格比較 •
気象データの監視 • サイトの変更検出 • Webサイトの情報解析、研究(比較、分類、統計)
13.
Webサービスを使用 • kimono (
https://www.kimonolabs.com/ ) • import.io ( https://import.io/ )
14.
プログラミング • wget, cURL •
Ruby ( Nokogiri、Mechanize) • Perl(Web::Scraper)
15.
Pythonでのスクレイピング • 標準ライブラリ • BeautifulSoup •
pyquery • Scrapy • その他
16.
バッテリー付属言語 Python
17.
標準ライブラリ • Pythonの標準ライブラリはとても充実 • ネットワーク、正規表現、etc •
Pythonの処理系だけあれば良い • 簡単なスクレイピングであれば十分実用的
18.
サンプル
19.
サンプル(requests版)
20.
Beautiful Soup • 2004年位から存在するライブラリ •
HTMLやXMLからデータを抽出して取得 • 最新バーションはBeautiful Soup 4系 • Python 2.7、Python 3.2に対応
21.
サンプル
22.
pyquery • jQuery風にHTML/XML操作が可能 • パーサーにはlxmlを使用(高速) •
JQuery風のセレクタを利用できる
23.
サンプル
24.
Selenium • Webブラウザのオートメーションツール • 実際にブラウザを操作してコンテンツを取得 •
PhantomJS(ヘッドレスブラウザ)と連携可 • JavaScript(Ajax)を利用しているサイトの コンテンツも簡単に取得できる
25.
サンプル
26.
Scrapy Scarpyは速くて、ハイレベルなスクレイピング クローラーのフレームワーク。Webサイトのク ロールと、構造化されたデータを取り出すのに 使用する。幅広い目的に使用できる。データマ イニングから、モニタリング、自動テストなど
27.
Scrapy
28.
Scrapyの特徴 • クローリング、スクレイピングフレームワーク • Djangoに影響されている(Middlewareなど) •
スクレイピングに必要な機能がそろっている • ドキュメントが充実している • Python2.7のみ対応(3にも対応するらしい)
29.
Scrapyの主な機能 • ダウンロード、抽出、保存 • ダウンロードしたドキュメントのキャッシュ •
強力なコマンドラインシェル • Robots.txtのパース • 非同期、並行ダウンロード(Twistedを使用) • ドメイン、IPアドレス単位のクロール間隔調整 • エラー時のリトライ • ログ出力
30.
Scrapyのアーキテクチャ https://scrapy.readthedocs.org/en/latest/topics/architecture.html
31.
コンポーネント • Scrapy Engine •
Scheduler • Downloader • Spiders • Item Pipeline • Downloader middlewares • Spider middlewares
32.
Scrapy Engine • コンポーネント間のデータフローを制御する •
特定のアクションが発生したら、イベントを 起こす
33.
Spider • ユーザーが作成するカスタムクラス • 取得したいURL、抽出する項目を記述する •
ダウンロードしてコンテンツをスクレイピン グして、Itemを作成する
34.
Scheduler • EngineからRequestを受け取り、スケジュー リングする
35.
Downloader • 実際にWebページを取得する。 • Downloader
middlewaresで処理を差し込む 事ができる。(キャッシュなど) • Ajaxのコンテンツは、Seleniumでダウンロー ドさせたりなど、処理の変更も可能。
36.
Item Pipeline • スパイダーによって抽出されたアイテムを出力 •
データのクレンジング、検証 • 永続化(JSON、File、DB、Mail)など
37.
開発手順 • Scrapyプロジェクトの作成 • Spiderを作成(リンク抽出、ダウンロード) •
Itemパイプラインでデータを保存
38.
プロジェクトの作成 $ scrapy startproject
scrapy_sample
39.
サンプル
40.
Spider作成(公式サイトより)
41.
実行 $ scrapy crawl
dmoz_spider -o scraped_data.json
42.
サンプル紹介 • Airbnbの物件情報をスクレイピング • 京都、沖縄(任意の場所) •
6/27 - 6/28(この期間で宿泊可能な物件) • 20000円以内 • 価格の分布図を表示(Web画面)
43.
物件情報
44.
ライブラリ - Scraping •
requests (HttpClient) • Beautiful Soup (Scraping) • SqlAlchemy ( O/R Mapper)
45.
ライブラリ - Web •
Bottle ( Web Application Framework) • Highcharts ( Graph Library) • SqlAlchemy ( O/R Mapper)
46.
Bottle • 軽量なWebアプリケーションフレームワーク • ルーティング •
テンプレートエンジン • HTTPユーティリティ • ビルトインのサーバー
47.
HelloWorld
48.
SQLAlchemy • データベースやSQLに関連する機能を提供す るライブラリ • O/Rマッパーは提供される機能のうちの1つ
49.
モデルの定義
50.
レコード作成、検索
51.
デモ
52.
デモ
53.
ソースコード(モデルの定義)
54.
ソースコード(スクレイピング)
55.
ソースコード(クローリング)
56.
ソースコード(Web)
57.
ソースコード(Web)
58.
ソースコード(Web)
59.
まとめ • Pythonでスクレイピングを行う場合、色々な アプローチがある。 • 標準のライブラリから、フレームワークまで 選択肢は沢山ある。 •
実際の要件に合わせて使用すれば良い。
60.
参考資料 • 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( 注意事項 )
61.
ご静聴ありがとうございました
Download