node爬虫

axios
(async function(){
	let data=await axios.get('接口');
	console.log(data)
})()
request
const request=require('request');
const fs=require('fs');
let url='https://juejin.im/welcome/frontend';
request(url,function(err,response,body){
	fs.writeFileSync(body.html,body);
	let reg=/st:name="title" class="title" data-v-\w+>(.+?)<\/a>/g;
	let titles=[];
	body.replace(reg,function(match,title){
		titles.push(title);
	})
	console.log(titles)
})
puppeteer
  • 截屏
let puppeteer=require('puppeteer');
(async function(){
	const browser=await puppeteer.launch({headless:false});//启动浏览器
	const page=await browser.newPage();//打开一个标签
	await page.goto('http://www.baidu.com');//跳转到百度
	await page.screenshot({
		path:'baidu.png',
		type:'png'
	})
	//browser.close();
})()
  • 爬虫
(async function(){
	const browser=await puppeteer.launch({headless:false});//启动浏览器
	let page=await browser.newPage();
	await page.goto('https://juejin.im/welcome/frontend');
	const titles=await page.$$eval('a.title',function(as){        //获取<a class="title"></a>元素标题
		return Array.from(as).map(a=>a.innerText)
	})
	console.log(titles)
})()
cheerio
  • attr
  • removeAttr
  • prop
    $(“input[type=‘checkbox’]”).prop(“checked”);
  • data()
    $("<div data-apple-color=‘red’>").data(); //{apple-color:‘red’}
    $("<div data-apple-color=‘red’>").data(‘apple-color’); //red
  • val()
  • hasClass()
  • addClass
  • removeClass
  • find
  • parent
  • next
  • nextAll
  • prev
  • prevAll
  • slice
  • siblings
  • first
  • last
  • eq
  • children
  • each
  • map
  • filter
  • after
  • before
  • append
  • remove
  • replaceWith
  • empty
  • html
  • text
//通过request请求回来的html代码,通过var $=cheerio.load(html),接下来就可以通过$(selector)
cron(定时)

参数分别代表:

单位范围
seconds0-59
minutes0-59
hours0-23
day1-31
months0-11
星期0-6

这里可以写特定值,或者区间值1-5(表示1-5秒,每秒执行一次)

  • 每秒
const cron=require('cron').CronJob;
//每秒
let job=new cron('* * * * * *',function(){
	console.log(new Date().toLocaleTimeString())
})
//1,3,5,7,9秒,每秒执行一次
let job1=new cron('1,3,5,7,9 * * * * *',function(){
	console.log(new Date().toLocaleTimeString())
})
//1-5秒每秒执行一次
let job2=new cron('1-5 * * * * *',function(){
	console.log(new Date().toLocaleTimeString())
})
//每隔5秒执行一次
let job3=new cron('*/5 * * * * *',function(){
	console.log(new Date().toLocaleTimeString())
})
//只有1秒执行一次
let job=new cron('1 * * * * *',function(){
	console.log(new Date().toLocaleTimeString())
})
job.start()
pm2

pm2是进程管理器,通过pm2 start +文件,可以启动对应进程

iconv-lite(转化为utf-8或者gbk)

var iconv=require(‘iconv-lite’);
通过request取回来的body
body=iconv.decode(body,‘gbk’);
这个时候body就全部正常

nodemailer(发送邮件)
const nodemailer=require('nodemailer');

const transport=nodemailer.createTransport({
	service:'qq',
	port:465,
	secureConnection:true,
	auth:{
		user:'12345678@qq.com',
		pass:'eppemjmncaagbggf'
	}
})
let options={
	from:'12345678@qq.com',
	to:'12345678@qq.com',
	subject:'hello',
	html:'<h1>hello</h1>'
}
transport.sendMail(options)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值