puppeteer详解
puppeteer详解简介puppeteer库是一个Node库,它提供了一个高级API来控制DevTools协议上的 Chrome或Chromium 。Puppeteer 默认运行无头,但可以配置为运行完整(非无头)Chrome或Chromium在浏览器中能做的事情大多数都能在puppeteer中完成!
比如:
生成页面的屏幕截图和PDF。
抓取SPA(单页面应用程序)并生成预渲染内容(即“SSR”(服务器端渲染))。
自动化表单提交,UI测试,键盘输入等。
创建最新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中运行测试。
捕获网站的时间线跟踪,以帮助诊断性能问题。
测试Chrome扩展程序。
安装1npm i puppeteer # 或 "yarn add puppeteer"
如果你不想下载内置的Chromium,那么你需要这样做:
1npm i puppeteer-core # 或 "yarn add puppeteer-core"
官方实例12345678910const ...
React配置路由
react配置路由router.js
1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * @name Router * @desc 页面路由配置 */import React, { Component } from 'react'import { Switch, Route, Redirect, Link } from 'react-router-dom'import Home from './pages/Home'import UserInfo from './pages/UserInfo'class Router extends Component { render() { return ( <> <nav> ...
bash自动提交git
利用bash自动提交git1234567891011#!/usr/bin/env shset -egit initgit statusgit pullgit add -Agit commit -m 'deploy'git pushcd -
新浪微博爬虫
新浪微博爬虫
工作需要编写爬虫爬取微博,判断时间戳来决定是否存储,就随手用node写了一个,记录下来分享一下
文件结构
sina_starter.js 爬虫启动器,负责定时执行任务,获取需要爬取的id列表
sina_spider.js 爬虫核心程序,负责爬取数据返回
sina_spider_functions.js 爬虫数据处理,负责url拼接,以及对sina_spider获取的数据筛选存储等
sina_starter.js1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950let schedule = require('node-schedule');const fs = require("fs");const axios = require('axios')const sf = require("./sina_spider_functions");var rule1 ...
正则表达式
正则表达式基本用法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152// 说明: 正则在不同语言的支持方法语法略有不同 js、java、php ...var str = "Hello Java Hello java";// 1:在js中如果要引入正则表达式,则需要:/.../// 2:stirng.match(/表达式/) 匹配成功返回数组,否则为null// 3:普通匹配符: 能够匹配以之对应的字符// 4:默认正则区分大小写// 5: i、g、m 称为正则标记符(参数): i:不区分大小写 g:全局匹配 m: 多行匹配var r=str.match(/java/gi);// 6:能够匹配多个字符中的其中一个匹配符: \d: 0~9 \w: 字母、数字、下划线 .:匹配除换行的所有字符(\d \w . 都只能匹配一个)str = "hello 2016";r=str.match(/\w.\d/g); ...
生成UID唯一标识符
uuid库简介uuid库在项目开发中我们常需要给某些数据定义一个唯一标识符,便于寻找,关联。node-uuid模块很好的提供了这个功能。
使用
uuid.v1(); –>基于时间戳生成 (time-based)
uuid.v4(); –>随机生成 (random)
通常我们使用基于时间戳 v1() 生成的UID,随机生成 v4() 还是有一定几率重复的。
12const uuid = require('uuid');let uid = uuid.v1();
常用场景不用过多赘述~~~
知乎爬虫
知乎爬虫
工作需要编写爬虫爬取知乎话题,就随手用node写了一个,记录下来分享一下,存储部分是python写的,这里只写爬虫实现
文件结构
zhihu_starter.js 爬虫启动器,负责定时执行任务,获取需要爬取的id列表
zhihu_spider.js 爬虫核心程序,负责爬取数据返回,这里启动了8084端口
spiderFunctions.js 爬虫数据处理,负责url拼接,以及对zhihu_spider获取的数据筛选存储等
zhihu_starter.js12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061//https://www.zhihu.com/topic/19567878/hot//待爬取地址let schedule = require('node-schedule');const fs = require("fs");const axios = r ...
时间类型数据相关
时间类型简介获取时间对象12345678910111213141516171819202122232425var date = new Date(); //获取一个时间对象var date = new Date([时间戳]); //获取一个时间对象/** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 2. 更多好用的方法可以在这查到 -> http://www.w3school.com.cn/jsref/jsref_obj_date.asp */date.getFullYear(); // 获取完整的年份(4位,1970)date.getMonth(); // 获取月份(0-11,0代表1月,用的时候记得加上1)date.getDate(); // 获取日(1-31)date.getTime(); // 获取时间(从1970.1.1开始的毫秒数)date.getHours(); // 获取小时数(0-23)date.getMinutes(); // 获取分钟数(0-59)date.getSeconds(); // 获取秒数(0-59)// 比如需要这样的格式 ...
js-api微信分享
微信分享效果此类文档网上很多,bug解决了小半天,踩坑之后记录下来.
原理原理是接入微信js-api,步骤如下:
secret以及appid换取access_tooken(在服务器保存,有效期7200秒)
用access_tooken换取jsapi_ticket(在服务器保存,有效期7200秒)
用jsapi_ticket在前端页面进行初始化以及参数准备
其中1和2采用方式: 心跳node-schedule库存储方式:fs文件写入(如果需要可以mysql存储)
目的实现以前分享只显示自动抓取的网站标题和网址,图片默认第一张实现以后可以自定义分享的标题,简介以及图片,并且可以使用回调
心跳换取access_tooken和jsapi_ticket12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758const request = require(`request`);const schedule = require( ...
React遍历
这种写法很巧妙,值得借鉴
1234567891011121314151617181920//Person.jsimport React from 'react';import './Person.css';const style = { backgroundColor: '#e0dede', margin: "10px 25%", }const Person =( props ) => { return <p style={style}> { props.name }<br/><br/> { props.age }<br/><br/> <input type="text" placeholder="改变年龄" ...