Submit Search
Upload
PythonによるWebスクレイピング入門
•
182 likes
•
105,631 views
Hironori Sekine
Follow
PythonによるWebスクレイピング入門
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 43
Download now
Download to read offline
Recommended
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
Masaki Hayashi
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
Takahiro Kubo
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learning
harmonylab
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
Ichigaku Takigawa
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph
物体検出コンペティションOpen Imagesに挑む
物体検出コンペティションOpen Imagesに挑む
Hiroto Honda
Deep Learningを用いたロボット制御
Deep Learningを用いたロボット制御
Ryosuke Okuta
Recommended
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
Masaki Hayashi
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
Takahiro Kubo
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learning
harmonylab
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
Ichigaku Takigawa
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph
物体検出コンペティションOpen Imagesに挑む
物体検出コンペティションOpen Imagesに挑む
Hiroto Honda
Deep Learningを用いたロボット制御
Deep Learningを用いたロボット制御
Ryosuke Okuta
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
SSII2022 [OS1-01] AI時代のチームビルディング
SSII2022 [OS1-01] AI時代のチームビルディング
SSII
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
Shota Imai
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
STAIR Lab, Chiba Institute of Technology
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
Shunji Umetani
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
LeapMind Inc
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争
Yosuke Shinya
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
Preferred Networks
【DL輪読会】A Path Towards Autonomous Machine Intelligence
【DL輪読会】A Path Towards Autonomous Machine Intelligence
Deep Learning JP
Introduction to YOLO detection model
Introduction to YOLO detection model
WEBFARMER. ltd.
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
University of Tsukuba
ICML2021の連合学習の論文
ICML2021の連合学習の論文
Katsuya Ito
【DL輪読会】Dropout Reduces Underfitting
【DL輪読会】Dropout Reduces Underfitting
Deep Learning JP
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Reinforcement Learning @ NeurIPS2018
Reinforcement Learning @ NeurIPS2018
佑 甲野
CuPy解説
CuPy解説
Ryosuke Okuta
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
More Related Content
What's hot
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
SSII2022 [OS1-01] AI時代のチームビルディング
SSII2022 [OS1-01] AI時代のチームビルディング
SSII
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
Shota Imai
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
STAIR Lab, Chiba Institute of Technology
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
Shunji Umetani
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
LeapMind Inc
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争
Yosuke Shinya
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
Preferred Networks
【DL輪読会】A Path Towards Autonomous Machine Intelligence
【DL輪読会】A Path Towards Autonomous Machine Intelligence
Deep Learning JP
Introduction to YOLO detection model
Introduction to YOLO detection model
WEBFARMER. ltd.
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
University of Tsukuba
ICML2021の連合学習の論文
ICML2021の連合学習の論文
Katsuya Ito
【DL輪読会】Dropout Reduces Underfitting
【DL輪読会】Dropout Reduces Underfitting
Deep Learning JP
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Reinforcement Learning @ NeurIPS2018
Reinforcement Learning @ NeurIPS2018
佑 甲野
CuPy解説
CuPy解説
Ryosuke Okuta
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
What's hot
(20)
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
SSII2022 [OS1-01] AI時代のチームビルディング
SSII2022 [OS1-01] AI時代のチームビルディング
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
ラスタ図形詰込み問題に対する局所探索法の特徴点抽出を用いた効率化
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
オープンソース SLAM の分類
オープンソース SLAM の分類
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
【DL輪読会】A Path Towards Autonomous Machine Intelligence
【DL輪読会】A Path Towards Autonomous Machine Intelligence
Introduction to YOLO detection model
Introduction to YOLO detection model
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
ICML2021の連合学習の論文
ICML2021の連合学習の論文
【DL輪読会】Dropout Reduces Underfitting
【DL輪読会】Dropout Reduces Underfitting
AWSではじめるMLOps
AWSではじめるMLOps
Reinforcement Learning @ NeurIPS2018
Reinforcement Learning @ NeurIPS2018
CuPy解説
CuPy解説
位置データもPythonで!!!
位置データもPythonで!!!
Viewers also liked
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
antibayesian 俺がS式だ
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
Shinichi Nakagawa
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
Hiroshi Funai
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
Atsushi Hayakawa
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
Takami Sato
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
Gensim
Gensim
saireya _
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Yuichi Ito
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
infinite_loop
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
Ransui Iso
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Satoshi Yamada
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
Tatsuya Tojima
Viewers also liked
(20)
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
Gensim
Gensim
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
Similar to PythonによるWebスクレイピング入門
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
Shin Matsumoto
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
s. kaijima
概説 Data API v3
概説 Data API v3
Yuji Takayama
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
Tech fun rails_workshop
Tech fun rails_workshop
OMEGA (@equal_001)
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
Yoshiyuki Nakamura
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
Hironori Sekine
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
Atsushi Yokohama (BEACHSIDE)
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
Building modernapplicationwithelasiccloud
Building modernapplicationwithelasiccloud
Shotaro Suzuki
GraphQLはどんな時に使うか
GraphQLはどんな時に使うか
Yutaka Tachibana
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
Naoto Hori
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
The Japan DataScientist Society
Similar to PythonによるWebスクレイピング入門
(20)
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
概説 Data API v3
概説 Data API v3
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Tech fun rails_workshop
Tech fun rails_workshop
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
Building modernapplicationwithelasiccloud
Building modernapplicationwithelasiccloud
GraphQLはどんな時に使うか
GraphQLはどんな時に使うか
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
PythonによるWebスクレイピング入門
1.
Pythonによる Webスクレイピング入門 関根裕紀
2.
自己紹介 • 関根裕紀(せきね ひろのり) •
アライドアーキテクツ株式会社 • ソフトウェア・エンジニア • PyCon JP 2014 スタッフ • Twitter(@checkpoint )
3.
• 前職まで • RSSリーダー、SNS •
WebMail • 写真共有サービス • 現在(アライドアーキテクツ) • モニプラFacebook、Social-IN • Webアプリケーション開発全般を担当 経歴
4.
アジェンダ • Webスクレイピングとは • PythonでのWebスクレイピング •
ライブラリの紹介、サンプル(入門編)
5.
Webスクレイピングとは? Webスクレイピングとは、WebサイトからWebページのHTMLデータを収 集して、特定のデータを抽出、整形し直すことである。 ! Webスクレイピングを行うことで、Webページを対象として、あたかも Web APIを利用しているかのようにデータを効率的に取得・収集することが 可能になる。用途の例としては、部分的にコンテンツを取り出して携帯電話 向けのコンテンツを生成したり、小見出しの一覧を生成したり、といった使 い方あある。Webスクレイピングは様々な手段で実現可能であるが、PHPや Perlといったスクリプト言語を使用して行われることが多い。 ! IT用語辞典 ( http://www.sophia-it.com/content/Webスクレイピング
) より
6.
Webスクレイピング • WebサイトからHTMLのデータを収集 • 特定のデータを抽出、加工 •
抽出したデータを再利用 • クローリング + スクレイピング
7.
クローリング • 英語の意味は、[ はう、ゆっくり進む] •
Webページのリンクの内容をたどる • Webページの内容をダウンロードして収集 • クローラー、スパイダーと呼ばれる
8.
スクレイピング • 英語の意味は、[ 削ること
] • ページの内容から、必要な情報を抽出すること
9.
用途 • 検索エンジン • 価格比較 •
気象データの監視 • サイトの変更検出 • Webサイトの情報解析、研究(比較、分類、統計など) • マッシュアップ
10.
方法(1) • Webサービス、アプリケーション • Yahoo!
Pipes( https://pipes.yahoo.com/ ) • kimono ( https://www.kimonolabs.com/ ) • import.io ( https://import.io/ )
11.
方法(2) • Ruby • Nokogiri •
Mechanize • Perl • Web::Scraper • JavaScript • CasperJS
12.
Pythonでのスクレイピング • 標準ライブラリ • BeautifulSoup •
pyquery • Scrapy(スクレピー、スクラパイ、スクレパイ)
13.
Python • バッテリー付属言語
14.
標準ライブラリ • Pythonの標準ライブラリはとても充実している • ネットワーク、正規表現ライブラリ •
Pythonの処理系だけあれば良い • 簡単なスクレイピングであれば十分実用的
15.
サンプル import re, urllib2 res
= urllib2.urlopen( http://ll.jus.or.jp/2014/program") pattern_title = re.compile( <title>(.*?)</title>') m = pattern_title.search(res.read()) title = m.group(1) print title >>> プログラム ¦ LL Diver
16.
Beautiful Soup • 2004年からあるライブラリ •
HTMLやXMLからデータを抽出して取得できる • 複数のパーサーに対応、パーサーを指定できる • 最新バーションはBeautiful Soup 4系 • Python 2.7、Python 3.2に対応 • スクレイピング
17.
サンプル import urllib2 from bs4
import BeautifulSoup res = urllib2.urlopen( http://ll.jus.or.jp/2014/program ) soup = BeautifulSoup(res.read()) soup.title >>> <title>プログラム ¦ LL Diver</title> for link in soup.find_all( a'): print(link.get( href')) >>> http://ll.jus.or.jp/2014/ >>> http://ll.jus.or.jp/2014/
18.
pyquery • jQuery風にHTML/XML操作が可能 • パーサーにはlxmlを使用(高速) •
JQuery風のセレクタを利用できる • スクレイピング
19.
サンプル from pyquery import
PyQuery as pq d = pq("http://ll.jus.or.jp/2014/program") print d( title").text() >>> プログラム ¦ LL Diver print d( .entry-title").text() >>> プログラム print d( #day ).text() >>> 昼の部
20.
Scrapy • Scarpyは速くて、ハイレベルなスクレイピング クローラーのフレームワーク。Webサイトのク ロールと、構造化されたデータを取り出すのに 使用する。幅広い目的に使用できる。データマ イニングから、モニタリング、自動テストなど
21.
Scrapyの特徴 • クローリング、スクレイピングフレームワーク • シンプル、拡張性がある •
バッテリー付属 • ドキュメント、テストが充実 • コミュニティが活発 • Python2.7のみ対応
22.
Scrapyの主な機能 • Webページからの情報抽出 • Robots.txtのパース •
ドメイン、IPアドレス単位のクロール間隔調整 • 並行処理 • エラー時のリトライ(回数を設定) • http://orangain.hatenablog.com/entry/scrapy
23.
アーキテクチャ https://scrapy.readthedocs.org/en/latest/topics/architecture.html
24.
Scrapy Engine https://scrapy.readthedocs.org/en/latest/topics/architecture.html
25.
Scrapy Engine • 全てのコンポーネントを制御するシステム •
特定のアクションが発生したら、イベントを起 こす責任を持つ。
26.
Spider https://scrapy.readthedocs.org/en/latest/topics/architecture.html
27.
Spider • ユーザーが作成するカスタムクラス • 取得したいURL、抽出する項目などを記述する •
取得した内容をスクレイピングして、Itemとし てItem Pipelineに送る
28.
Scheduler https://scrapy.readthedocs.org/en/latest/topics/architecture.html
29.
Scheduler • リクエストのトラフィック等の制御
30.
Downloader https://scrapy.readthedocs.org/en/latest/topics/architecture.html
31.
Downloader • 実際にWebページを取得する • Downloader
middlewaresで処理を差し込む事 ができる。(キャッシュなど)
32.
Item Pipeline https://scrapy.readthedocs.org/en/latest/topics/architecture.html
33.
Item Pipeline • スパイダーによって抽出されたアイテムを出力 •
データのクレンジング、検証 • 永続化(JSON、File、DB、Mail)など
34.
手順 • Scrapy プロジェクトの作成 •
抽出するアイテムの定義 • アイテムの抽出とクローリングのためのSpider を作成 • 抽出したアイテムのパイプライン部分作成 • 基本はSpiderとItem部分を書いていけばOK
35.
プロジェクト作成 $ scrapy startproject
scrapy_sample $ tree scrapy_sample scrapy_sample/ ├── scrapy.cfg └── scrapy_sample ├── __init__.py ├── items.py ├── pipelines.py ├── settings.py └── spiders └── __init__.py
36.
抽出するItem定義 class TorrentItem(scrapy.Item): url =
scrapy.Field() name = scrapy.Field()
37.
Spider作成 class MininovaSpider(CrawlSpider): name =
'mininova' allowed_domains = ['mininova.org'] start_urls = ['http://www.mininova.org/yesterday/'] rules = [Rule(LinkExtractor(allow=['/tor/d+']), parse_torrent')] ! def parse_torrent(self, response): torrent = TorrentItem() torrent['url'] = response.url torrent['name'] = response.xpath("//h1/text()").extract() return torrent
38.
実行 $ scrapy crawl
mininova -o scraped_data.json $ cat scraped_data.json { "url": "http://www.mininova.org/tor/13277197", "name": ["lady anna voice free plugin VSTI free download new by Softrave ] }, { "url": "http://www.mininova.org/tor/13277195", "name": ["mandala VSTI free download new by Softrave ] },
39.
まとめ • Pythonでスクレイピングを行う場合、色々なア プローチがある。 • 標準のライブラリから、フレームワークまで選 択肢は沢山あるので、要件に合わせて使用すれ ば良い •
Pythonに限らず、LL言語はスクレイピング用の ライブラリがたくさん。
40.
参考URL • 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( 注意事項 )
41.
宣伝 • PyCon JP
2014は来月開催です。
42.
宣伝 • https://pycon.jp/2014/ • 9/12
(金)∼ 9/15(月)の4日間 • チュートリアル(9/12) • カンファレンス(9/13、14) • スプリント(9/15) • 絶賛準備中。お待ちしております!
43.
ご静聴ありがとうございました。
Download now