我写了一个自动化脚本涨粉,从0阅读到接近100粉丝(二)

简介: 我写了一个自动化脚本涨粉,从0阅读到接近100粉丝

06 模拟不同设备


const puppeteer = require('puppeteer');
const devices = require('puppeteer/DeviceDescriptors');
const iPhone = devices['iPhone 6'];
puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.emulate(iPhone);
  await page.goto('https://www.baidu.com');
  // 其他操作...
  await browser.close();
});


07 请求拦截


const puppeteer = require('puppeteer');
async function run () {
  const browser = await puppeteer.launch({
    headless:false,
    defaultViewport:{
      width:1280,
      height:800
    }
  })
  const page = await browser.newPage();
  await page.setRequestInterception(true);
  page.on('request', interceptedRequest => {
    const blockTypes = new Set(['image', 'media', 'font']);
    const type = interceptedRequest.resourceType();
    const shouldBlock = blockTypes.has(type);
    if (shouldBlock) {
      interceptedRequest.abort();
    } else {
      interceptedRequest.continue();
    }
  });
  await page.goto('https://t.zhongan.com/group');
}
run();


08 性能分析


const puppeteer = require('puppeteer');
(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.tracing.start({path: 'trace.json'});
    await page.goto('https://t.zhongan.com/group');
    await page.tracing.stop();
    browser.close();
})();


09 生成pdf


const URL = 'http://es6.ruanyifeng.com';
const puppeteer = require('puppeteer');
const fs = require('fs');
fs.mkdirSync('es6-pdf');
(async () => {
  let browser = await puppeteer.launch();
  let page = await browser.newPage();
  await page.goto(URL);
  await page.waitFor(5000); // 等待五秒,确保页面加载完毕
  // 获取左侧导航的所有链接地址及名字
  let aTags = await page.evaluate(() => {
    let eleArr = [...document.querySelectorAll('#sidebar ol li a')];
    return eleArr.map((a) =>{
        return {
          href: a.href.trim(),
          name: a.text
        }
    });
  });
   // 先将本页保存成pdf,并关闭本页
  console.log('正在保存:0.' + aTags[0].name);
  await page.pdf({path: `./es6-pdf/0.${aTags[0].name}.pdf`});
  // 遍历节点数组,逐个打开并保存 (此处不再打印第一页)
  for (let i = 1, len = aTags.length; i < len; i++) {
    let a = aTags[i];
    console.log('正在保存:' + i + '.' + a.name);
    page = await browser.newPage();
    await page.goto(a.href);
    await page.waitFor(5000);
    await page.pdf({path: `./es6-pdf/${i + '.' + a.name}.pdf`});
  }
  browser.close();
})


10 自动化发布微博


const puppeteer = require('puppeteer');
const {username,password} = require('./config')
async function run(){
    const browser = await puppeteer.launch({
        headless:false,
        defaultViewport:{width:1200,height:700}, 
        ignoreDefaultArgs:['--enable-automation'],
        slowMo:200,
        args:['--window-size=1200,700']})
    const page = await browser.newPage();
    await page.goto('http://wufazhuce.com/',{waitUntil:'networkidle2'});
    const OneText = await page.$eval('div.fp-one-cita > a',ele=>ele.innerText);
    console.log('OneText:',OneText);
    await page.goto('https://weibo.com/',{waitUntil:'networkidle2'});
    await page.waitFor(2*1000);
    await page.reload();
    const loginUserInput = await page.waitForSelector('input#loginname');
    await loginUserInput.click();
    await loginUserInput.type(username);
    const loginUserPasswdInput = await page.waitForSelector('input[type="password"]');
    await loginUserPasswdInput.click();
    await loginUserPasswdInput.type(password);
    const loginBtn = await page.waitForSelector('a[action-type="btn_submit"]')
    await loginBtn.click();
    const textarea = await page.waitForSelector('textarea[class="W_input"]')
    await textarea.click();
    await textarea.type(OneText);
    const sendBtn = await page.waitForSelector('a[node-type="submit"]');
    await sendBtn.click();
}
run();


CSDN的脚本


image.png

这里注意CSDN有反扒机制,规则自己琢磨就行,我贴了伪代码,核心代码就不开放,毕竟自己玩玩就行了

const puppeteer = require('puppeteer');
async function autoCommentCSDN(username, password, targetBlogger, commentContent) {
  const browser = await puppeteer.launch({ headless: false }); // 打开有头浏览器
  const page = await browser.newPage();
  // 登录CSDN
  await page.goto('https://passport.csdn.net/login');
  await page.waitForTimeout(1000); // 等待页面加载
  // 切换到最后一个Tab (账号登录)
    // 点击“密码登录”
    const passwordLoginButton = await page.waitForXPath('//span[contains(text(), "密码登录")]');
    await passwordLoginButton.click();
  // 输入用户名和密码并登录
  const inputFields = await page.$$('.base-input-text');
  await inputFields[0].type( username);
  await inputFields[1].type( password);
  await page.click('.base-button');
  await page.waitForNavigation();
//   // 跳转到博主的首页
  await page.goto(`https://blog.csdn.net/${targetBlogger}?type=blog`);
//   // 点击第一篇文章的标题,进入文章页面
  await page.waitForSelector('.list-box-cont', { visible: true });
  await page.click('.list-box-cont');
//   // 获取文章ID
  console.log('page.url()',page.url())
  // await page.waitForTimeout(1000); // 等待页面加载
  await page.goto('https://blog.csdn.net/weixin_52898349/article/details/132115618')
await page.waitForTimeout(1000); // 等待页面加载
console.log('开始点击评论按钮...')
console.log('page.url()',page.url())
// 获取当前页面的DOM内容
const bodyHTML = await page.evaluate(() => {
    return document.body.innerHTML;
});
console.log(bodyHTML);
//  await page.waitForSelector('.comment-side-tit');
//  const commentInput = await page.$('.comment-side-tit');
//  await commentInput.click();
 // 等待评论按钮出现
 // 点击评论按钮
//  await page.waitForSelector('.comment-content');
//  const commentInput = await page.$('.comment-content textarea');
//  await commentInput.type(commentContent);
//  const submitButton = await page.$('.btn-comment-input');
//  await submitButton.click();
//  console.log('评论成功!');
//  await browser.close();
}
// 请替换以下参数为您的CSDN账号信息、目标博主和评论内容
const username = 'weixin_52898349';
const password = 'xxx!';
const targetBlogger = 'weixin_52898349'; // 目标博主的CSDN用户名
const commentContent = '各位大佬们帮忙三连一下,非常感谢!!!!!!!!!!!'; // 评论内容
autoCommentCSDN(username, password, targetBlogger, commentContent);

目录
相关文章
|
27天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
20天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
26 7
|
18天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
26天前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
23天前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
24天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
28天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
1月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
1月前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
66 2
|
1月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
82 3
下一篇
DataWorks