├── .gitignore ├── README.md ├── src ├── demo1.js ├── demo2.js └── demo3.js ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # puppeteer_01 2 | 简书文章源码: https://www.jianshu.com/p/56babda610f9 3 | -------------------------------------------------------------------------------- /src/demo1.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require('puppeteer'); 2 | 3 | (async () => { 4 | const browser = await puppeteer.launch({ 5 | headless: true 6 | }) 7 | 8 | const page = await browser.newPage() 9 | 10 | await page.goto('http://www.baidu.com') 11 | await page.screenshot({ 12 | path: 'c:/temp/baidu.png' 13 | }) 14 | })() -------------------------------------------------------------------------------- /src/demo2.js: -------------------------------------------------------------------------------- 1 | const devices = require('puppeteer/DeviceDescriptors') 2 | const puppeteer = require('puppeteer'); 3 | 4 | (async () => { 5 | const browser = await puppeteer.launch({ 6 | headless: true 7 | }) 8 | 9 | const page = await browser.newPage() 10 | await page.emulate(devices['iPhone X']) 11 | 12 | await page.goto('http://www.baidu.com') 13 | await page.screenshot({ 14 | path: 'c:/temp/baidu_iphone_X.png' 15 | }) 16 | })() -------------------------------------------------------------------------------- /src/demo3.js: -------------------------------------------------------------------------------- 1 | const devices = require('puppeteer/DeviceDescriptors') 2 | const puppeteer = require('puppeteer'); 3 | 4 | (async () => { 5 | const browser = await puppeteer.launch({ 6 | headless: true 7 | }) 8 | 9 | const page = await browser.newPage() 10 | await page.emulate(devices['iPhone X']) 11 | 12 | await page.goto('http://www.baidu.com') 13 | await page.type('#index-kw', 'puppeteer') 14 | await page.click('#index-bn') 15 | await page.waitForNavigation({ timeout: 3000 }) 16 | 17 | await page.screenshot({ 18 | path: 'c:/temp/baidu_iphone_X_search_puppeteer.png' 19 | }) 20 | })() -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer_01", 3 | "version": "1.0.0", 4 | "description": "简书文章源码: https://www.jianshu.com/p/56babda610f9", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/wu0792/puppeteer_01.git" 12 | }, 13 | "dependencies": { 14 | "puppeteer": "^1.2.0" 15 | }, 16 | "keywords": [], 17 | "author": "", 18 | "license": "ISC", 19 | "bugs": { 20 | "url": "https://github.com/wu0792/puppeteer_01/issues" 21 | }, 22 | "homepage": "https://github.com/wu0792/puppeteer_01#readme" 23 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | agent-base@^4.1.0: 6 | version "4.2.0" 7 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" 8 | dependencies: 9 | es6-promisify "^5.0.0" 10 | 11 | async-limiter@~1.0.0: 12 | version "1.0.0" 13 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 14 | 15 | balanced-match@^1.0.0: 16 | version "1.0.0" 17 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 18 | 19 | brace-expansion@^1.1.7: 20 | version "1.1.11" 21 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 22 | dependencies: 23 | balanced-match "^1.0.0" 24 | concat-map "0.0.1" 25 | 26 | buffer-from@^1.0.0: 27 | version "1.1.0" 28 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" 29 | 30 | concat-map@0.0.1: 31 | version "0.0.1" 32 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 33 | 34 | concat-stream@1.6.2: 35 | version "1.6.2" 36 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 37 | dependencies: 38 | buffer-from "^1.0.0" 39 | inherits "^2.0.3" 40 | readable-stream "^2.2.2" 41 | typedarray "^0.0.6" 42 | 43 | core-util-is@~1.0.0: 44 | version "1.0.2" 45 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 46 | 47 | debug@2.6.9: 48 | version "2.6.9" 49 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 50 | dependencies: 51 | ms "2.0.0" 52 | 53 | debug@^3.1.0: 54 | version "3.1.0" 55 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 56 | dependencies: 57 | ms "2.0.0" 58 | 59 | es6-promise@^4.0.3: 60 | version "4.2.4" 61 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" 62 | 63 | es6-promisify@^5.0.0: 64 | version "5.0.0" 65 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 66 | dependencies: 67 | es6-promise "^4.0.3" 68 | 69 | extract-zip@^1.6.5: 70 | version "1.6.7" 71 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" 72 | dependencies: 73 | concat-stream "1.6.2" 74 | debug "2.6.9" 75 | mkdirp "0.5.1" 76 | yauzl "2.4.1" 77 | 78 | fd-slicer@~1.0.1: 79 | version "1.0.1" 80 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" 81 | dependencies: 82 | pend "~1.2.0" 83 | 84 | fs.realpath@^1.0.0: 85 | version "1.0.0" 86 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 87 | 88 | glob@^7.0.5: 89 | version "7.1.2" 90 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 91 | dependencies: 92 | fs.realpath "^1.0.0" 93 | inflight "^1.0.4" 94 | inherits "2" 95 | minimatch "^3.0.4" 96 | once "^1.3.0" 97 | path-is-absolute "^1.0.0" 98 | 99 | https-proxy-agent@^2.1.0: 100 | version "2.2.1" 101 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" 102 | dependencies: 103 | agent-base "^4.1.0" 104 | debug "^3.1.0" 105 | 106 | inflight@^1.0.4: 107 | version "1.0.6" 108 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 109 | dependencies: 110 | once "^1.3.0" 111 | wrappy "1" 112 | 113 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 114 | version "2.0.3" 115 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 116 | 117 | isarray@~1.0.0: 118 | version "1.0.0" 119 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 120 | 121 | mime@^2.0.3: 122 | version "2.3.1" 123 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" 124 | 125 | minimatch@^3.0.4: 126 | version "3.0.4" 127 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 128 | dependencies: 129 | brace-expansion "^1.1.7" 130 | 131 | minimist@0.0.8: 132 | version "0.0.8" 133 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 134 | 135 | mkdirp@0.5.1: 136 | version "0.5.1" 137 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 138 | dependencies: 139 | minimist "0.0.8" 140 | 141 | ms@2.0.0: 142 | version "2.0.0" 143 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 144 | 145 | once@^1.3.0: 146 | version "1.4.0" 147 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 148 | dependencies: 149 | wrappy "1" 150 | 151 | path-is-absolute@^1.0.0: 152 | version "1.0.1" 153 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 154 | 155 | pend@~1.2.0: 156 | version "1.2.0" 157 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 158 | 159 | process-nextick-args@~2.0.0: 160 | version "2.0.0" 161 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 162 | 163 | progress@^2.0.0: 164 | version "2.0.0" 165 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 166 | 167 | proxy-from-env@^1.0.0: 168 | version "1.0.0" 169 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" 170 | 171 | puppeteer@^1.2.0: 172 | version "1.4.0" 173 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.4.0.tgz#437f0f3450d76e437185c0bf06f446e80f184692" 174 | dependencies: 175 | debug "^3.1.0" 176 | extract-zip "^1.6.5" 177 | https-proxy-agent "^2.1.0" 178 | mime "^2.0.3" 179 | progress "^2.0.0" 180 | proxy-from-env "^1.0.0" 181 | rimraf "^2.6.1" 182 | ws "^3.0.0" 183 | 184 | readable-stream@^2.2.2: 185 | version "2.3.6" 186 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 187 | dependencies: 188 | core-util-is "~1.0.0" 189 | inherits "~2.0.3" 190 | isarray "~1.0.0" 191 | process-nextick-args "~2.0.0" 192 | safe-buffer "~5.1.1" 193 | string_decoder "~1.1.1" 194 | util-deprecate "~1.0.1" 195 | 196 | rimraf@^2.6.1: 197 | version "2.6.2" 198 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 199 | dependencies: 200 | glob "^7.0.5" 201 | 202 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 203 | version "5.1.2" 204 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 205 | 206 | string_decoder@~1.1.1: 207 | version "1.1.1" 208 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 209 | dependencies: 210 | safe-buffer "~5.1.0" 211 | 212 | typedarray@^0.0.6: 213 | version "0.0.6" 214 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 215 | 216 | ultron@~1.1.0: 217 | version "1.1.1" 218 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" 219 | 220 | util-deprecate@~1.0.1: 221 | version "1.0.2" 222 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 223 | 224 | wrappy@1: 225 | version "1.0.2" 226 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 227 | 228 | ws@^3.0.0: 229 | version "3.3.3" 230 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" 231 | dependencies: 232 | async-limiter "~1.0.0" 233 | safe-buffer "~5.1.0" 234 | ultron "~1.1.0" 235 | 236 | yauzl@2.4.1: 237 | version "2.4.1" 238 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" 239 | dependencies: 240 | fd-slicer "~1.0.1" 241 | --------------------------------------------------------------------------------