SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
もうブラウザは見たくない
REQUESTSで始める明日5分早く帰る方法
山田 聡@DENZOWILL
#STAPY 20160510
WHO AM I?
非プログラマ
DBエンジニア6年生(PostgreSQL,Oracle)
Python歴3年?
worked at 株式会社アシスト
stapy参加8回目
#STAPYでLTを7回やらせていただきまし
た
http://www.slideshare.net/satoshiyamada71697
stapy05-stapy12
DBエンジニアに必要なPython
Pythonでハガキに宛名書きする方法
PythonでIPMessenger送る方法
etc
今日話すこと
社内のイントラで提携業務を毎回マウスでやるのに消耗し
た
山田がいろいろめんどくさくなって帰るのが遅くなるから
PythonのHTTPクライアントモジュール で
効率化して23:00退社を22:55退社に改善しようって話
Requests
CAUTION
実際の私の勤務時間とは関係ございま
せん
REQUESTS?
サードパーティのHTTPクライアントライブラリ
Requestsは、人が使いやすいように設計
されていて、Pythonで書かれている
Apache2 Licensed ベースのHTTPライブラ
リです。
REQUESTSを使うべき3つの理由
1. 直感的につかえる
このメソッドだろうと思ったものがちゃんとある
2. 豊富な機能
GET/POSTのステートレスなリクエストから
セッション作成してのステートフルなリクエストまで
ダイジェスト認証もデフォルトでできる
3. 作者がイケメン
http://www.kennethreitz.org/
天は二物を与えずは嘘
ぐぬぬ
とてもつかうのが簡単
import requests
# GETなんだからgetなのは自然
res = requests.get("https://github.com/denzow/ipymessenger")
# HTTPステータスコードもそのまま
res.status_code # ­> 200
# 中身はtextで見られる
print res.text
とてもつかうのが簡単
import requests
# post用のデータはDictでそのまま
payload = {'key1': 'value1', 'key2': 'value2'}
# POSTなんだからpostなのは自然
res = requests.post("http://httpbin.org/post", data=payload)
print res.text
どうやって5分早く帰る?
ブラウザ操作で投げているデータを真
似られればイイ
CHROMEならデベロッパツール
NETWORKタブで確認可能
効率化したいアクションをした後
CSSとかJSへのアクセスは無視
大体MethodがPOSTのやつを調べればOK
右クリックでパラメータとかをコピー
{
  "log": {
    "version": "1.2",
    "creator": {
:
          "postData": { //このキーの下にある
:
            "params": [
              {
                "name": "key1",
                "value": "value1"
              },
              {
                "name": "key2",
                "value": "value2"
              }
            ]
          }
        },
:
:
}
パラメータがわかったら
import requests
# post用のデータはDictでそのまま
payload = {'key1': 'value1', 'key2': 'value2'}
# POSTなんだからpostなのは自然
res = requests.post("http://xxxxxxx", data=payload)
print res.text
さっきと全然かわらない
これをfor文で回せば情シスにすぐ怒られる
イントラはログインしないと使えない
だろ
sessionをつかえばいけます
import requests
session = requests.session()
auth_data = {"username":"xxxx", "password":"xxxxx" ....}
# ログイン処理
res = session.post("http://xxxxxxx/login", data=auth_data)
# あとは好き勝手やる
res = session.post("http://xxxxxxx/some_act", data={"key1":"data"})
ちなみに
GitHubにログインして云々
えらく大変
CSRF対策とかの関係で結構他にやらないといけない事
が多い
投げるデータも多い
イントラくらいのセキュリティでとりあえず遊ぶのが
吉
どうしてもやりたい
素直にブラウザ操作自体をエミュレートしましょう
JSいらないならMechanicalSoupが簡単
モジュール 補足
mechanizeとBeautifulSoupを混ぜた合
の子、Python3でも動作
本当のブラウザ自体をコードで操作す
る。JSも動く
ブラウザライクな操作をコードで行
う。Python2のみ。JSは動かない、古
い
MechanicalSoup
Selenium
mechanize
MECHANICALSOUP
往年の名作mechanizeとHTMLパーサとして人気の
BeautifulSoupの合の子
2014年からの作成で比較的新しいライブラリ
ブラウザ操作からHTMLパースまで一人でやれる偉い子
まだまだ日本語のナレッジが少ないので次回のLTでどな
たか是非
皆様が明日22:55までに退社できる一助となれば幸いです。
終わり

Más contenido relacionado

La actualidad más candente

言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
Shinya Okano
 

La actualidad más candente (20)

ググリワードを探す話
ググリワードを探す話ググリワードを探す話
ググリワードを探す話
 
俺とコミュニティ活動のタスク
俺とコミュニティ活動のタスク俺とコミュニティ活動のタスク
俺とコミュニティ活動のタスク
 
アプリ制作マスターへの道
アプリ制作マスターへの道アプリ制作マスターへの道
アプリ制作マスターへの道
 
俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
 
読書会開催提案
読書会開催提案読書会開催提案
読書会開催提案
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
俺とGitHub
俺とGitHub俺とGitHub
俺とGitHub
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
俺と2016コミュニティ活動振り返り
俺と2016コミュニティ活動振り返り俺と2016コミュニティ活動振り返り
俺と2016コミュニティ活動振り返り
 
14対話bot発表資料
14対話bot発表資料14対話bot発表資料
14対話bot発表資料
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
俺とプログラミング教育
俺とプログラミング教育俺とプログラミング教育
俺とプログラミング教育
 
WindowsでPython
WindowsでPythonWindowsでPython
WindowsでPython
 
俺とGitHub(先行公開ver.)
俺とGitHub(先行公開ver.)俺とGitHub(先行公開ver.)
俺とGitHub(先行公開ver.)
 
20150217 イタンジプログラミング講座テキスト第3回
20150217 イタンジプログラミング講座テキスト第3回20150217 イタンジプログラミング講座テキスト第3回
20150217 イタンジプログラミング講座テキスト第3回
 
20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回
 

Similar a Requestsで始める5分前帰社

『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論
Hisao Soyama
 
IE6をやめようと思ってももう手遅れ
IE6をやめようと思ってももう手遅れIE6をやめようと思ってももう手遅れ
IE6をやめようと思ってももう手遅れ
Masakazu Muraoka
 
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptxPower PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
Demodori Gatsuo - A Certain Citizen Developers Association
 
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい! request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
Masato Noguchi
 
なぜデータをインタラクティブに可視化したいのか?
なぜデータをインタラクティブに可視化したいのか?なぜデータをインタラクティブに可視化したいのか?
なぜデータをインタラクティブに可視化したいのか?
hide ogawa
 

Similar a Requestsで始める5分前帰社 (20)

元BIエバンジェリストが語る!脱獄matplot!
元BIエバンジェリストが語る!脱獄matplot!元BIエバンジェリストが語る!脱獄matplot!
元BIエバンジェリストが語る!脱獄matplot!
 
『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論
 
GmailとPythonでイベント管理
GmailとPythonでイベント管理GmailとPythonでイベント管理
GmailとPythonでイベント管理
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
IE6をやめようと思ってももう手遅れ
IE6をやめようと思ってももう手遅れIE6をやめようと思ってももう手遅れ
IE6をやめようと思ってももう手遅れ
 
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
 
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptxPower PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
Power PlatformでAIに質問するMy バーチャルスペース作ってみた.pptx
 
実務でGo使い始めました
実務でGo使い始めました実務でGo使い始めました
実務でGo使い始めました
 
俺と otoya
俺と otoya俺と otoya
俺と otoya
 
Listen&notifyとbwpの間違った使い方
Listen&notifyとbwpの間違った使い方Listen&notifyとbwpの間違った使い方
Listen&notifyとbwpの間違った使い方
 
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい! request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
 
Make TypingGame in JavaScript
Make TypingGame in JavaScriptMake TypingGame in JavaScript
Make TypingGame in JavaScript
 
Backlogでメールとエクセルから解放された話
Backlogでメールとエクセルから解放された話Backlogでメールとエクセルから解放された話
Backlogでメールとエクセルから解放された話
 
なぜデータをインタラクティブに可視化したいのか?
なぜデータをインタラクティブに可視化したいのか?なぜデータをインタラクティブに可視化したいのか?
なぜデータをインタラクティブに可視化したいのか?
 
俺と今年請けた仕事のテック分布
俺と今年請けた仕事のテック分布俺と今年請けた仕事のテック分布
俺と今年請けた仕事のテック分布
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
 
PredictionIOのPython対応計画
PredictionIOのPython対応計画PredictionIOのPython対応計画
PredictionIOのPython対応計画
 
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
 
IoT時代のデータ伝送とインフラに求められている機能と技能 - ニフティクラウド mobile backend #7
IoT時代のデータ伝送とインフラに求められている機能と技能 - ニフティクラウド mobile backend #7IoT時代のデータ伝送とインフラに求められている機能と技能 - ニフティクラウド mobile backend #7
IoT時代のデータ伝送とインフラに求められている機能と技能 - ニフティクラウド mobile backend #7
 
もしアジャver2.0
もしアジャver2.0もしアジャver2.0
もしアジャver2.0
 

Más de Satoshi Yamada

Más de Satoshi Yamada (9)

PostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLPostgreSQLとPythonとSQL
PostgreSQLとPythonとSQL
 
10080分でPythonからIP Messeneger
10080分でPythonからIP Messeneger10080分でPythonからIP Messeneger
10080分でPythonからIP Messeneger
 
15分で情シスに怒られる方法
15分で情シスに怒られる方法15分で情シスに怒られる方法
15分で情シスに怒られる方法
 
Djangoで業務改善したい
Djangoで業務改善したいDjangoで業務改善したい
Djangoで業務改善したい
 
PostgreSQL実行計画入門@関西PostgreSQL勉強会
PostgreSQL実行計画入門@関西PostgreSQL勉強会PostgreSQL実行計画入門@関西PostgreSQL勉強会
PostgreSQL実行計画入門@関西PostgreSQL勉強会
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
 
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 

Último

Último (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Requestsで始める5分前帰社