Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Puppeteer を 使って Web ブラウザを動かしてみよう!
Search
02
August 13, 2019
Programming
1
530
Puppeteer を 使って Web ブラウザを動かしてみよう!
8/13 サポーターズ Colab 勉強会の登壇資料です。
02
August 13, 2019
Tweet
Share
More Decks by 02
See All by 02
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
360
新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!
cocoeyes02
0
1.3k
PHP8.4におけるJITフレームワークIRと中間表現について理解を深める
cocoeyes02
1
1.1k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
1.2k
PHP RFC: Deprecate implicitly nullable parameter types をサクッと話す
cocoeyes02
0
970
PHPUnit 11 概論
cocoeyes02
5
3k
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
1
1.3k
BASEにおける インシデント対応フローと工夫
cocoeyes02
0
1.2k
AWS Lambdaから始める Devチームの小さなDevOps改善 〜QCDどれも諦めない運用を目指して〜 / Start to improving small DevOps with AWS Lambda by Dev Team
cocoeyes02
0
1.5k
Other Decks in Programming
See All in Programming
CSC307 Lecture 04
javiergs
PRO
0
620
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
CSC307 Lecture 03
javiergs
PRO
1
470
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
310
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
520
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.1k
ThorVG Viewer In VS Code
nors
0
640
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
710
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
TestingOsaka6_Ozono
o3
0
270
Cap'n Webについて
yusukebe
0
160
Graviton と Nitro と私
maroon1st
0
160
Featured
See All Featured
Marketing to machines
jonoalderson
1
4.5k
Discover your Explorer Soul
emna__ayadi
2
1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
92
The untapped power of vector embeddings
frankvandijk
1
1.5k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
140
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
200
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
Facilitating Awesome Meetings
lara
57
6.7k
HDC tutorial
michielstock
1
300
Transcript
Puppeteer Λ ͬͯ Web ϒϥβΛ ಈ͔ͯ͠ΈΑ͏ʂ 02 8/13αϙʔλʔζ Colab ษڧձ
ΞδΣϯμ • ࣗݾհ • Puppeteer ͱԿ͔ • Puppeteer ͰͰ͖Δ͜ͱ •
Puppeteer ͷϝϦοτ / σϝϦοτ • ϋϯζΦϯ • Puppeteer ͏࣌ͷҙ
ࣗݾհ • 02 ʢେ ௬ʣ • Twitter, Github:cocoeyes02 • גࣜձࣾΟϧήʔτ
• όοΫΤϯυʢPHP(Laravel), GolangʣΤϯδχΞ • ۦ͚ग़͠QAΤϯδχΞ • ͨ·ʔʹOSSͷίϯτϏϡʔτͯͨ͠Γ͠·͢
Puppeteer ͱԿ͔
Puppeteer ͱԿ͔ • Headless Chrome • Google Chrome ͕ఏڙ͍ͯ͠Δɺը໘Λද ࣔͤͣʹಈ࡞͢ΔϞʔυ
Puppeteer ͱԿ͔ • Puppeteer • Google Chrome νʔϜ͕࡞͍ͬͯΔ Headless Chrome
Λૢ࡞͢Δ Node ϥΠϒϥϦ • ≒ ը໘্Ͱݟ͑ͳ͍ Chrome ΛࣗಈͰૢ࡞͢Δ Google ެࣜπʔϧ • ͱݴ͍ͭͭɺ ը໘্ʹදࣔ͢ΔઃఆͰ͖·͢
Puppeteer ͱԿ͔
Puppeteer ͱԿ͔
Puppeteer ͰͰ͖Δ͜ͱ
Ͱ͖Δಈ࡞ • εΫϦʔϯγϣοτΛࡱΔ • URL Λࢦఆͯ͠ભҠ͢Δ • ϑΥʔϜೖྗɺϘλϯΫϦοΫɺΩʔϘʔυೖྗͳͲ • JS
Λͬͯ DOM ͷૢ࡞Λ͢Δ • etc…
༻ྫ • ʑͷ࡞ۀΛޮԽ͍ͨ͠ʂ • ۈଵೖྗΛࣗಈԽ͢Δ • γϥόεͷใΛऔಘ͢Δ
༻ྫ • ͋ΔαΠτΛεΫϨΠϐϯά͍ͨ͠ʂ • ωοτΦʔΫγϣϯͷՁ֨มಈΛεΫϨΠ ϐϯά͢Δ • ※εΫϨΠϐϯά = ΣϒαΠτͷHTML͔
ΒඞཁͳσʔλΛऔಘ͢Δ
༻ྫ • ϓϩμΫτͷ E2E ςετʢࣗಈϒϥβςε τʣΛॻ͖͍ͨʂ • ϩάΠϯ ~ CV
ୡͷྲྀΕΛɺ11ճࣗಈԽ ֬ೝ͢Δ
Puppeteer ͷ ϝϦοτ / σϝϦοτ
Puppeteer ͷϝϦοτ • ڥߏஙָ͕ • Chrome ຊମΛͬͯςετͰ͖Δ • Headless Chrome
ɺChrome ຊମͷػೳ • ެࣜυΩϡϝϯτΛ࢝Ίɺจݙ͕๛ • Google ͕ϝϯςφϯε͍ͯ͠ΔͷͰɺͬͺΓ҆৺ײ ͕͋Δ
Puppeteer ͷσϝϦοτ • ΫϩεϒϥβςετʢෳϒϥβͰͷςετʣΛ͍ͨ͠ ਓʹ͍͍ͯͳ͍ • Safari IE ͳͲͰ
Puppeteer ͑ͳ͍ • Firefox β൛͕ͩҰԠͰ͖Δ͠ɺChromium ϕʔεͷ Edge Ͱ͋ΕແཧΓ͍͡ΕͰ͖Δ • ଞͷݴޠΛ͍͍ͨɺjavascript ΛͲ͏͍ͯͨ͘͠ͳ͍ ਓ͍ͯͳ͍
ϋϯζΦϯ
node ͕ೖ͍ͬͯΔ͔֬ೝ • node -v Λλʔϛφϧ or ίϚϯυϓϩϯϓτ Ͱ࣮ߦͯ֬͠ೝ
όʔδϣϯ͕දࣔ͞Εͳ͔ͬͨ ํ • Mac • /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/
install/master/install)” • brew install nodebrew • nodebrew install-binary latest • nodebrew use latest • Windows • ҎԼ͔ΒΠϯετʔϥʔΛDL࣮͠ߦ • http://nodejs.org/
npm ͕ೖ͍ͬͯΔ͔֬ೝ • npm —version Λλʔϛφϧ or ίϚϯυϓϩ ϯϓτͰ࣮ߦͯ֬͠ೝ
ॾʑ࡞ • mkdir puppeteer_handson • cd puppeteer_handson • npm init
• શ෦ Enter ͰOK • npm install puppeteer
εΫϦϓτϑΝΠϧ࡞ • ҎԼͷαΠτ͔ΒɺεΫϦϓτΛίϐʔ͢Δ • https://gist.github.com/ cocoeyes02/7c2cc9caacb4e14d0827d9d43ef7e51d • touch colab.js •
vi colab.js • ฤूϞʔυʢiʣ • ϖʔετ͢Δ • อଘ͢Δʢ:wqʣ
εΫϦϓτϑΝΠϧ࡞ • node colab.js Λ࣮ߦ͢Δ • ͏·͍͚͘ɺλʔϛφϧ or ίϚϯυϓϩ ϯϓτͷը໘ʹ
json ܗࣜͷจࣈྻ͕දࣔ͞ Ε·͢
Puppeteer Λ͏࣌ͷҙ
࣮ࡍʹ͋ͬͨܐࣄࣄ݅ • Ԭ࡚ࢢཱதԝਤॻؗࣄ݅ʢ௨শɿLibrahackࣄ݅ʣ • 20103݄ࠒɺࢢຽ͔Β Ԭ࡚ࢢཱਤॻؗͷΣϒαΠτ ͷଂॻݕࡧγεςϜʹର͠ଓ͕ग़དྷͳ͍ͱ͕ۤ͋Γɺ ͦͷޙΣϒαΠτͷӾཡ͕ࠔʹͳΔࣄଶ͕૬͍࣍ ͩɻ •
5݄25ʹΞΫηεΛߦ͍ͬͯͨஉੑ͕ଂॻݕࡧγεςϜ ʹߴසͷϦΫΤετΛނҙʹૹΓ͚ͭͨͱِͯ͠ܭۀ ༰ٙͰୁั͞Εͨɻ
࣮ࡍʹ͋ͬͨܐࣄࣄ݅ • Ԭ࡚ࢢཱதԝਤॻؗࣄ݅ʢ௨শɿLibrahackࣄ݅ʣ • உੑ͕࣮ࡍʹߦ͍ͬͯͨͷɺଂॻݕࡧγες Ϝͷ͍উखʹຬ͠ͳ͔ͬͨͨΊࣗͰ࡞ ͨ͠ΫϩʔϥΛ࣮ߦ͠ɺଂॻݕࡧγεςϜ͔Β ਤॻใΛऔಘ͢Δ͜ͱͰ͋ͬͨɻ • ࢀরɿԬ࡚ࢢཱதԝਤॻؗࣄ݅
- Wikipedia
͜͏͍͏ͷͬͪΌμϝʂ • ར༻نͰεΫϨΠϐϯάΛېࢭ͍ͯ͠ΔαΠτ ͰɺεΫϨΠϐϯάΛͨ͠ • εΫϨΠϐϯάͷස͕ߴ͘ɺαʔόʹର͢Δ ෛՙ͕େ͖͔ͬͨނʹαʔόΛམͱͯ͠͠·ͬͨ • εΫϨΠϐϯάʹΑΓऔಘͨ͠ใΛෆਖ਼ʹ ༻͢Δ
ར༻نͰεΫϨΠϐϯάΛېࢭͯ͠ ͍ΔαΠτͰɺεΫϨΠϐϯάΛͨ͠ • ͪΌΜͱར༻نΛಡΈ·͠ΐ͏ • ex. Facebook • 2. FacebookͰڞ༗Մೳͳίϯςϯπ͓ΑͼೝΊΒΕΔߦҝ
• ฐ͔ࣾΒࣄલͷڐՄΛಘΔ͜ͱͳ͘ɺࣗಈԽ͞ΕͨखஈΛ ༻͍ͯͷσʔλʹΞΫηεͨ͠ΓσʔλΛऔಘͨ͠Γ ͢Δ͜ͱɺΞΫηεڐՄͷͳ͍σʔλͷΞΫηεΛࢼ ΈΔ͜ͱΛېࢭ͠·͢ɻ
εΫϨΠϐϯάͷස͕ߴ͘ɺ αʔόʹର͢Δෛՙ͕େ͖͔ͬͨނʹ αʔόΛམͱͯ͠͠·ͬͨ • Լख͢Δͱِܭۀʹͳͬͯ͠·͏͜ͱ… • ex. Librahackࣄ݅ʮ1࣌ؒʹ400Ҏ্ϦΫΤετΛૹΒ ΕΔͱଞͷϦΫΤετͷॲཧ͕ෆՄೳʹͳΔෆ۩߹Λ ؚΜͰ͍ͨʯ
• աͳ༻߇͑·͠ΐ͏ • উख͕Θ͔Βͳ͚ΕɺਓؒͷखͰͰ͖ΔൣғͷϦΫ Τετ͕ແ
εΫϨΠϐϯάʹΑΓऔಘͨ͠ ใΛෆਖ਼ʹ༻͢Δ • ࢲతར༻Ͱ͋ΕOK • ͜͏͍͏ͷNG • ༻తͰ͏ • εΫϨΠϐϯάͷ݁Ռɺ͘͠Ճͨ͠ͷΛଞऀ
ʹެ։͢Δ • etc..
ͦͷଞ • ͪ͜Β߹ΘͤͯಡΈ·͠ΐ͏ • WebεΫϨΠϐϯάͷҙࣄ߲Ұཡ - Qiita @nezuq • https://qiita.com/nezuq/items/
c5e827e1827e7cb29011
·ͱΊ
·ͱΊ • Puppeteer ը໘্Ͱݟ͑ͳ͍ Chrome ΛࣗಈͰ ૢ࡞͢Δ Google ެࣜπʔϧ •
ڥߏஙָͰɺεΫϨΠϐϯάࣗಈϒϥβς ετΛ࢝ΊΔʹ͍ͬͯ͜ • Puppeteer Λར༻ͨ͠εΫϨΠϐϯάʹ͍ͭͯɺ ๏త͕Ͳ͏ͯ͠ආ͚ΒΕͳ͍ͷͰௐͳ͕Β ͬͯͶ