使用node搭建自动发图文微博机器人的方法-创新互联
本文仅供学习交流,请勿用于商业用途,并遵守新浪微博相关规定。
成都创新互联公司主要从事网站设计制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务阳春,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220代码目录
此微博机器人的实现功能如下:
- 模拟登陆新浪微博,获取cookie;
- 自动上传图片至微博图床;
- 自动发送内容不同的图文微博;
- 通过定时任务,实现周期性发微博任务。
效果图
要实现发送图文微博可以分为三个步骤
- 登录微博。
- 图片上传至微博图床获取PID。
- 发送微博。
登录
登录可以使用Puppeteer node库,很轻松的实现登录获取微博cookie,这里不多介绍,可以自行搜索Puppeteer学习。
Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。
async function login(username, password) { const browser = await puppeteer.launch({ // headless: false, slowMo: 250, executablePath: '' }); const page = (await browser.pages())[0]; await page.setViewport({ width: 1280, height: 800 }); await page.goto("https://weibo.com/"); await page.waitForNavigation(); await page.type("#loginname", username); await page.type("#pl_login_form > div > div:nth-child(3) > div.info_list.password > div > input", password); await page.click("#pl_login_form > div > div:nth-child(3) > div:nth-child(6)"); await page.waitForNavigation().then(result => { return new Promise((resolve) => { page.cookies().then(async cookie => { fs.createWriteStream("cookie.txt").write(JSON.stringify(cookie), "UTF8");//存储cookie await browser.close();//关闭打开的浏览器 resolve(cookie); }); }) }).catch(e => { page.screenshot({ path: 'code.png', type: 'png', x: 800, y: 200, width: 100, height: 100 }); return new Promise((resolve, reject) => { readSyncByRl("请输入验证码").then(async (code) => { await page.type("#pl_login_form > div > div:nth-child(3) > div.info_list.verify.clearfix > div > input", code); await page.click("#pl_login_form > div > div:nth-child(3) > div:nth-child(6)"); await page.waitForNavigation(); page.cookies().then(async cookie => { fs.createWriteStream("cookie.txt").write(JSON.stringify(cookie), "UTF8"); await browser.close(); resolve(cookie); }); }) }) }) }
当前标题:使用node搭建自动发图文微博机器人的方法-创新互联
本文链接:http://scyanting.com/article/coooes.html