SlideShare a Scribd company logo
エンジョイ☆スクレイピング
@fmkz___
もしもそれがヒトのようにアクセス
し、ヒトのようにインターバルをと
るのなら、それはヒトである
自己紹介
•  kzfm (@fmkz___)
–  blog.kzfmix.com
–  Shizuoka.py

•  とある製薬企業の研究員
•  日本酒とdrum n bass好き
•  Python歴は6年くらい
–  (その前はPerl)

•  よく使うのはFlask, Pandas
–  最近DjangoかRoRに移ろうかなと
あるサービスのRSSをクロー
ラで定期的にチェックしてい
たのですが、
「ロボットアクセス禁止って
書いてあるだろ」ってブロッ
クされました
文化の違いって難しいですね?
シンプルなサイト
簡単
requestsを使う
•  URLを指定すると、HTMLやXMLが
返ってくるような
–  RSSや普通のウェブページ

•  requests+pyquery
•  requests+feedparser
例
•  Naverまとめからひ
たすら富士山の画像
を集める
import	
  re	
  
import	
  requests	
  
c	
  =	
  requests.get('h3p://
matome.naver.jp/odai/
2134560784352051501').content	
  
print(''.join([x.group(0)	
  for	
  x	
  in	
  
re.finditer(r'<img	
  src=".+".*?
class="MTMItemThumb".*?/>',	
  c)]))	
参考: h3p://d.hatena.ne.jp/heavenshell/20121214/1355499643
状態を持つサイト
statefulはstressful
mechanizeを使う
•  ログインしてごにょごにょする必要がある
ようなタスク
•  queryがPOSTでsearch.doとか
result.doみたいなサイト
例
•  amazonのアフィリエイトにアクセスし
て売上を(メールで確認したい)
コード(一部)
from	
  mechanize	
  import	
  Browser	
  
from	
  pyquery	
  import	
  PyQuery	
  as	
  pq	
  
br	
  =	
  Browser()	
  
br.set_handle_robots(False)	
  
br.addheaders	
  =	
  [('User-­‐agent',	
  'Mozilla/5.0	
  (X11;	
  U;	
  Linux	
  i686;	
  en-­‐US;	
  	
  
rv:1.9.0.1)	
  Gecko/2008071615	
  Fedora/3.0.1-­‐1.fc9	
  Firefox/3.0.1')]	
  
br.open(amazon_url)	
  
br.select_form(name="sign_in")	
  
br["email"]	
  =	
  email	
  
br["password"]	
  =	
  password	
  
response	
  =	
  br.submit()	
  
d	
  =	
  pq(response.get_data())	
  
data.text	
  for	
  data	
  in	
  d('div').filter('.data’)	
  
mechanizeで扱えないサイト
•  JavascriptでDOMを組み立てるよう
なタイプのサイト
–  googleとか

•  最近増えている…
–  Javascript MVCとかさ
Browserを使えばいい
•  Browserをスクリプトから操作する
–  perlだとWWW::Mechanize::Firefox
–  pythonだとSelenium
•  chrome, firefox, ie, opera

•  ヘッドレスでやりたい
–  CasperJS
–  SeleniumのPhantomJSドライバを使う
Selenium+PhatomJS
seleniumを使う
from	
  selenium	
  import	
  webdriver	
  
import	
  ime	
  
driver	
  =	
  webdriver.PhantomJS()	
  
driver.get("h3ps://www.google.co.jp/webhp?hl=ja&tab	
  	
  
=ww&authuser=0#authuser=0&hl=ja&q=python")	
  
print	
  driver.current_url	
  
ime.sleep(2)	
  
driver.save_screenshot("screen_shot130918.png")	
  
driver.quit()
デモ
google patent searchにオ
プションを指定しながら検索する
エレメントを探す
•  めんどくさい
•  最近はChrome使っている
–  虫眼鏡で探して
–  Xpathに変換して
–  find_element_by_xpathメソッドに渡し
て
–  処理する
エレメントを探す
•  chromeの虫眼鏡
Xpathとしてコピー
スクリプトで使う
•  find_element_by_xpathメソッドに
渡して
•  send_keysとかclickメソッドを呼び出
す
デバッグ
•  デバッグの基本はもちろんプリントデバッ
グ
•  save_screenshot( check.png )で
出力して
•  スクリーンショットを目視する
–  なかなかつらい作業
デバッグ時の注意点
•  要素が見つからない等の理由でエラー終
了すると、バックグラウンドで動いてい
るghostdriverが死なずに生き残ってい
る
•  ふと気づくと大量に発生しているのでたま
にプロセスをキルしましょう
まとめ
•  むかしむかし「正確無比なドラマーは結
局打ち込みと変わらないんじゃないか
なー」と思ったことがあります
•  今は、多少ゆらぎをもたせたロボットは、
よく訓練された人力クローラと変わらな
いんじゃないかなーと思っています

More Related Content

More from Kazufumi Ohkawa

圏論walker
圏論walker圏論walker
圏論walker
Kazufumi Ohkawa
 
ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67
Kazufumi Ohkawa
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅ
Kazufumi Ohkawa
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へ
Kazufumi Ohkawa
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること
Kazufumi Ohkawa
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
Kazufumi Ohkawa
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史
Kazufumi Ohkawa
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
Kazufumi Ohkawa
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
Kazufumi Ohkawa
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章
Kazufumi Ohkawa
 
R -> Python
R -> PythonR -> Python
R -> Python
Kazufumi Ohkawa
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
Kazufumi Ohkawa
 
Unigram mixtures
Unigram mixturesUnigram mixtures
Unigram mixtures
Kazufumi Ohkawa
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆
Kazufumi Ohkawa
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章
Kazufumi Ohkawa
 
入門機械学習6章
入門機械学習6章入門機械学習6章
入門機械学習6章
Kazufumi Ohkawa
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
Kazufumi Ohkawa
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目Kazufumi Ohkawa
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章Kazufumi Ohkawa
 

More from Kazufumi Ohkawa (20)

圏論walker
圏論walker圏論walker
圏論walker
 
ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅ
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へ
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章
 
R -> Python
R -> PythonR -> Python
R -> Python
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
 
Unigram mixtures
Unigram mixturesUnigram mixtures
Unigram mixtures
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章
 
入門機械学習6章
入門機械学習6章入門機械学習6章
入門機械学習6章
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 

Recently uploaded (16)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

エンジョイ☆スクレイピング