• Stars
    star
    128
  • Rank 281,044 (Top 6 %)
  • Language
    JavaScript
  • Created about 7 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🦀Try all kinds of toss about using GoogleChrome puppeteer(尝试各种折腾使用GoogleChrome puppeteer(木偶))

Toss Puppeteer

Puppeteer(中文翻译"木偶") 是 Google Chrome 团队官方的无界面(Headless)Chrome 工具,它是一个 Node 库,提供了一个高级的 API 来控制 DevTools协议上的无头版 Chrome 。也可以配置为使用完整(非无头)的 Chrome。Chrome 素来在浏览器界稳执牛耳,因此,Chrome Headless 必将成为 web 应用自动化测试的行业标杆。使用 Puppeteer,相当于同时具有 Linux 和 Chrome 双端的操作能力,应用场景可谓非常之多。此仓库的建立,即是尝试各种折腾使用 GoogleChrome Puppeteer;以期在好玩的同时,学到更多有意思的操作。

Puppeteer 能做些什么

你可以在浏览器中手动完成的大部分事情都可以使用 Puppeteer 完成!你可以从以下几个示例开始:

  • 生成页面的截图和PDF。
  • 抓取SPA并生成预先呈现的内容(即“SSR”)。
  • 从网站抓取你需要的内容。
  • 自动表单提交,UI测试,键盘输入等
  • 创建一个最新的自动化测试环境。使用最新的JavaScript和浏览器功能,直接在最新版本的Chrome中运行测试。
  • 捕获您的网站的时间线跟踪,以帮助诊断性能问题。

微注: 鉴于个人信息不便于提交,已设置 git 提交忽视私密配置文件;如要运行如下几个 Demo,需要手动在 src/config 目录下,创建 secret.js,格式如 secretSample.js 所示(🍀️)。

备注: 鉴于 Puppeteer 需要 Chromium,但,即便处于 Science 上网的姿态, 也会遇到 Chromium 无法成功下载的问题;所以在最新的修改中,已经其替换为 puppeteer-core (默认情况下不下载 Chromium,使用时需要确保您安装的 puppeteer-core 版本与您要连接的浏览器兼容)。在实际使用时候,即便已然按照说明操作,但依旧会报如下错误:

Error: Chromium revision is not downloaded. Run "npm install" or "yarn install"

因此只好采取手动下载 Chromium 的方式解决;因此在运行此仓库时候,您需要在 Puppeteer API Tip-Of-Tree 根据指定 Puppeteer 下载对应 Chromium,然后放置到项根目录即可(项目中已对各不同系统做了适配,国内用户可以在 Taobao Mirrors 根据系统按需下载)。

自动抓取指定网站文章分享至指定网站

这番折腾,是基于 Puppeteer 抓取某网页链接( 具体是在 https://jefwww.fjade.com/categories/Front-End/ 中随机出一篇),将其推送到技术头条;其目的在于:练习初步运用 Puppeteer

运行命令

git clone https://github.com/nicejade/toss-puppeteer
npm i (更推荐 yarn)
npm run shareBlogToBlogread

步骤详述

  • 打开技术头条-提交页面,同时到 晚晴幽草轩-Front-End 随机抓取一篇文章,获取到标题、地址、描述。
  • 模拟人为操作,点开“用微博登录”按钮(会跳转至微博登录页面);
  • 模拟人为操作,填充用户名和密码并“点击”登录按钮,完成登录(会重新跳转至技术头条-提交页面);
  • 模拟人为操作,填充之前获取到的标题、地址、描述,并“点击”提交,打完收工。
  • 将其部署于服务器,并设置任务,定时间隔性执行,完成自动按时分享。

提交🈯️定链接到指定网站

处于某些分享需要,偶尔会涉及到这样的需求即:分享指定链接(Url)到指定网站;这个相比于如上功能,要省却些步骤。如果愿意折腾的话,还可以提交至多个不同的目标网站,只需增加设定目标地址,登录方式,以及提交表单的信息即可。当然,对于涉及到登录需要复杂的验证网站,额外需要多做些处理。这里只对技术头条做了配置,运行如下命令即可:(Update@17-12-17)

Url=https://jeffjade.com/2017/09/28/127-nice-front-end-tutorial/ yarn shareUrlToTheSite
url=https://jeffjade.com/2017/09/28/127-nice-front-end-tutorial/ yarn shareUrlToTheSite

抓取指定网站页面并将其打印成 PDF

此番折腾,是基于 Puppeteer 抓取指定网站页面(示例是 https://jeffjade.com/ 所有文章),并将其打印成 PDF;其目的在于:进一步熟悉运用 Puppeteer

运行命令

git clone https://github.com/nicejade/toss-puppeteer
npm i (更推荐 yarn)
npm run printWebsiteToPDF

步骤详述

  • 打开 https://jeffjade.com/archives 页面,从而得到博客文章总分页总数;
  • 运用 axios & cheerio 抓取分页并分析,从而得到网站所有文章链接,并存储在数据中;
  • 遍历所有链接(借助 async 控制并发),在页面渲染完成之后,将其打印成 PDF 并保存。

使用 Puppeteer 抓取指定网站页面并将其打印成 PDF

一键初始化 Gitment 评论系统

背景说明

早前在 About Me有如此感叹道:

嗟夫,真真是:独立的才是自己的。博客从最开始用多说,17年6月1日关闭服务后,转战网易云跟帖;未曾想它8月1日也跟着关闭了。索性转投靠至国外Disqus,奈何这堵墙厉害之极,家里虽也翻了墙,却仍不能很好访问;这才又转战至 Gitment;😂言多皆泪,感慨颇多啊——独立的才是自己的,之后得空时候,还是自己搞一套😪,Fighting。

这提及的 Gitment 是基于 GitHub Issues 的评论系统;它本身的一些特征,使得它存在很多优势,对于维护“程序”相关话题博客。所以,个人博客晚晴幽草轩就采用此评论系统;但,它也会存在一些问题,譬如需要主动初始化评论,initialize-your-comments,当然也可以运用些工具协助完成。对于已经写了 140+ 篇博文的晚晴幽草轩,这实在很有必要;所以,这里谈及即,使用 Puppeteer 一键来初始化 Gitment 评论系统(需要注明的是,每个系统结构有所区别,这里只具有些参考性,却不能直接加以使用)。

运行命令

git clone https://github.com/nicejade/toss-puppeteer
npm i (更推荐 yarn)
npm run initializeGitment

步骤详述

  • 打开 https://jeffjade.com/archives 页面,从而得到博客文章总分页总数;
  • 运用 axios & cheerio 抓取分页并分析,从而得到网站所有文章链接,并存储在数据中;
  • 打开 Github 登录地址: https://github.com/login ,填充用户名、密码,从而完成登录;
  • 遍历所存储链接,并在不同窗口打开(借助 async 控制并发);
  • 等待,直到初始化按钮显示后并点击(实际上需要先触发博客页面的 Github login 链接);

一键初始化 Gitment 评论系统

寄存的博客评论,可在 jadeblog-backups#issues 查看;(实际上,在使用 Gitment 之时,触发初始化按钮,并未能真正完成初始化,猜测这可能是插件本身的问题,或者别的,需要进一步探究)(Update@17-11-23)。

Puppeteer Trace 做性能分析

可以使用 tracing.starttracing.stop 创建一个可以在 Chrome 开发工具或时间线查看器中打开的跟踪文件(每个浏览器一次只能激活一个跟踪),具体参见 Puppeteer Trace Api

await page.tracing.start({path: 'trace.json'})
await page.goto('https://www.google.com')
await page.tracing.stop()

运行命令

git clone https://github.com/nicejade/toss-puppeteer
npm i (更推荐 yarn)
npm run performanceAnalysis

一键初始化 Gitment 评论系统

对于 Chrome Performance/Timeline,如何使用,可以参见 Chrome 开发者工具,或者移步至 Chrome Tutorial,这里有比较详尽的,不断补充修缮的参考资料。

相关链接

More Repositories

1

markdown-online-editor

📝基于 Vue、Vditor,所构建的在线 Markdown 编辑器,支持流程图、甘特图、时序图、任务列表、HTML 自动转换为 Markdown 等功能;🎉新增「所见即所得」编辑模式。
CSS
2,402
star
2

nice-front-end-tutorial

🌍 Constantly updated front-end resources, tutorials, opinions(与时俱进版前端资源,教程和意见。)
914
star
3

vue-boilerplate-template

🍎 Efficient development of web SPA using Vue.js(2.*) + Webpack + Element-ui + Pwa + Vuex + Vuex-router + Vue-i18n + Dayjs + Lodash.
JavaScript
471
star
4

awesome-vue-cli3-example

🦅 Awesome example for rapid Vue.js development using vue-cli3 .
Vue
168
star
5

nicelinks-vue-client

🐬 很棒的 Web 应用——倾城之链(NICE LINKS),基于 Vue2.*(vuex、Webpack4、ES6、Element-UI)所构建。
Vue
140
star
6

nicelinks-weekly

基于 Deno、TypeScript 编写,一键生成「倾城之链(旨在云集全球优质网站)」周刊文章,每周五发布。https://blog.nicelinks.site/
TypeScript
94
star
7

quickapp-boilerplate-template

🔨致力于构建更为优雅的「快应用」开发脚手架模板。https://quickapp.lovejade.cn/tag/quickapp/
JavaScript
74
star
8

vuepress-web-app

📝 采用 VuePress 构建的 Web 应用程序,支持 Pwa、Github Issues 评论、Prettier Markdown 等。
Shell
68
star
9

awesome-quickapp

🛠 A curated list of awesome quickapp tutorials, articles, projects and resources.
47
star
10

docker-vue-node-nginx-mongodb-redis

🐉 An awesome boilerplate, Integrated Docker, Vue, Node, Nginx, Mongodb and Redis in one, Designed to develop & build your web applications more efficient and elegant.
JavaScript
45
star
11

arya-jarvis

🛠 Designed to save developers more time and energy. https://www.jeffjade.com/
JavaScript
41
star
12

sublime_packages

✍️ SublimeText Pageages Backups For Front-End Developer
Python
37
star
13

nicelinks-quick-app

🌪Awesome NICE LINKS(倾城之链) client built with quickapp(快应用).
JavaScript
28
star
14

arya-jarvis-doc

Arya Jarvis:旨在为开发人员节省更多时间和精力(Document)
23
star
15

chatgpt.nicelinks.site

素问智聊斋,非官方 ChatGPT 在线客户端,旨在提供更便捷的 ChatGPT 访问体验;它基于非官方 ChatGPT API、Svelte、TailwindCSS、Vite 和 NodeJS 所搭建;无需账号,零配置,即可与 ChatGPT 畅聊;支持自定义 OPENAI API KEY。
Svelte
20
star
16

puppeteer-robot

🤖基于 Puppeteer 所构建的简易机器人,以帮助自动化完成些精确性事务。
JavaScript
15
star
17

vue-common-components

Simple and common Vue1.* components,It has been stopped maintenance long ago(!已停止维护).
Vue
15
star
18

markdown2png

简单好用的在线文本工具;支持将 Markdown、rich text、word 等格式内容,快速转化为 png、pdf、html 等文件,并支持一键下载、自定义设置等功能。
Vue
14
star
19

www.lovejade.cn

🌊幽居空谷轩:集中展示个人些许博客、作品及文章 https://www.jeffjade.com | https://quickapp.lovejade.cn | https://nice.lovejade.cn
Shell
12
star
20

sentences-monthly-newsletter

人生最曼妙的风景,是内心的淡定与从容。曼妙句子,旨在云集世间摇曳生姿的文字,或情感、或唯美、或修身、或励志、或哲学、或娱乐,拳拳真情,精心择选,总有荡漾你心的那一言。https://read.lovejade.cn/
TypeScript
11
star
21

about-me

主页:倾城之链作者,晚晴幽草轩轩主,天意人间舫舫主,静晴轩别苑博主,静轩之别苑博主。
CSS
10
star
22

read.lovejade.cn

箴言锦语,云集世间曼妙句子;或情感、或唯美、或修身、或励志、或哲学、或娱乐,拳拳真情,精心择选,总有荡漾你心的那一言。 https://read.lovejade.cn
JavaScript
10
star
23

nice-jade-collecting

Nice Jade Collecting(Excellent Article / Scripts / Tools / Web-site)
JavaScript
9
star
24

play-with-python

学习 Python & 实战练习,以便能更好的玩 Python 相关技能、工具。
Python
9
star
25

prettier-plugin-quickapp

Prettier Quickapp Plugin .
JavaScript
9
star
26

nicelinks-miniprogram

基于 mpvue 所构建的小程序版本「倾城之链」,https://nicelinks.site
Vue
7
star
27

docz-web-app

📝 Web applications built with Docz ( 采用 Docz 构建的 Web 应用程序 ).
JavaScript
6
star
28

responsive-email-template

Make better response mail templates
JavaScript
5
star
29

nicejade

My GitHub Profile README. https://www.jeffjade.com/
5
star
30

jadeblog-backups

The use of Gitalk, record the visitor comments on the blog(晚晴幽草轩) content.
5
star
31

resume

🇨🇳 personal resume
4
star
32

prerender-spa-server

For serving your prerendered HTML to crawlers for SEO, through Prerender & Redis & Nginx.
JavaScript
4
star
33

simple-resume-tpl

Create an simple resume template used to practice the Foundation framework
JavaScript
4
star
34

experience-precipitate

🏹 On the knowledge, tools, thinking and so on experience precipitation.
3
star
35

blog.nicelinks.site

基于 GatsbyJS 所搭建的网站,用来承载「倾城之链」周刊,https://blog.nicelinks.site 。
JavaScript
3
star
36

screenshot-and-upload-to-ali-oss

Take a screenshot of the site's homepage, compress it, and upload it to ali oss.
JavaScript
2
star
37

micro-web-component

🌌 Micro web component used to show miniprogram code. https://nicelinks.site/
JavaScript
2
star
38

quickapp-deeplink

JavaScript
2
star
39

fine.niceshare.site

吾生有涯,而知无涯;缘知而往,随心以行;上下求索,探寻自然;沉淀于此,云证前言。
MDX
2
star
40

ad-block-remind

A pop-up box reminding users who install the Ad Block Plus plugin to request a whitelist. Built on Web component. https://nicelinks.site/
JavaScript
2
star
41

play-with-docker

🐳Recording learn & use Docker to do some interesting things.
JavaScript
1
star
42

graceful-sentences-miniprogram

基于 mpvue 所构建的「曼妙句子」小程序版本 。https://read.lovejade.cn/
JavaScript
1
star
43

reward-service

通过 WebComponent 所构建的打赏服务,使之可以轻松植入自己的各个 Web 网站。
JavaScript
1
star
44

homepage

Based on Astro, Starlight, Svelte, Markdown, MDX, TailwindCSS, TypeScript built personal homepage, Fast, accessible, and easy-to-use, Highly customizable . | 基于 Astro, Starlight, Svelte, Markdown, MDX,TailwindCSS, TypeScript 所构建的个人主页,快速、易用、易于访问、高度可定制。https://niceshare.site/
TypeScript
1
star