首页 > 其他分享 >用pyautogui爬公众号文章

用pyautogui爬公众号文章

时间:2024-09-23 16:02:39浏览次数:7  
标签:pyautogui time lines 列表 公众 文章 click

因为我关注的这个公众号文章内容很简单,基本都是纯文字,所以直接全选复制文本就可以了,用pyautogui比selenium还来得快。

摘要:

  1. 用 pyautogui 控制公众号文章列表的滚动和点击
  2. 用 pyautogui 发送快捷键全选复制网页文本
  3. 用 pyperclip 接收剪切板中的文字

特别注意:

  1. 每次打开新网页或者回到公众号文章列表,都要在网页或控件上再次点击鼠标,否则鼠标焦点可能还在桌面或者别的地方

import pyperclip
import pyautogui,time

def process_clipboard(text):
    lines = text.split("\n")

    lines[0] = "## " + lines[0]
    lines[1] = lines[1].strip() + "," + lines[2]
    lines[2] = '\n'
    for i in range(1,10):
        lines.pop(-1) # 直接删掉文章最后几行
    return ("".join(lines),lines[0]+lines[1])  # 返回文章,和标题(用于记录日志)

def work():
    # 记住,运行代码之前要把公众号文章列表拉到尾部,直到不出现列表
    dest_file = open("D:\\xx\\vuepress\\xx\\xx\\xx\\xxx.md", "a", encoding='utf-8')

    pyautogui.click(1336, 1065) # 点击任务栏的微信图标
    pyautogui.click(1230, 800)  # 点击公众号文章列表灰色区域,使鼠标回到列表控件
    pyautogui.scroll(30) # 滚轮向上滚动
    time.sleep(1)
    i = 0
    while i < 109:  # 滚动次数,一次处理4篇文章
        if i > 0:
            pyautogui.click(1230, 800)  # 点击公众号文章列表灰色区域,使鼠标回到列表控件
            pyautogui.scroll(317)  # 一次滚4篇文章,这个高度要自己用 pyautogui.position() 去试出来
            time.sleep(0.5)
        j = 0
        while j < 4:
            if j != 0:
                # pyautogui.click(1336, 1065)
                pyautogui.click(1230, 800)  # 点击公众号文章列表灰色区域,使鼠标回到列表控件
                time.sleep(0.5)
            pyautogui.click(1000, 900 - 130 * j) # 循环点击4篇文章
            time.sleep(0.5)
            pyautogui.click(1230, 800)  # 点击公众号文章列表灰色区域,使鼠标回到列表控件
            pyautogui.hotkey('ctrl', 'a') # 快捷键,全选
            time.sleep(1)
            pyautogui.hotkey('ctrl', 'c')  # 快捷键,复制
            clipboard_content = pyperclip.paste() # 获取剪切板复制的内容
            text = process_clipboard(clipboard_content) # 处理文本
            dest_file.write(text[0]) # 把处理后的文本写入文件
            print(i*4+j, text[1]) # 打印日志
            pyautogui.click(1898, 16) # 关闭网页
            j += 1
        i += 1

if __name__ == '__main__':
    work()

标签:pyautogui,time,lines,列表,公众,文章,click
From: https://www.cnblogs.com/stxz/p/18427189

相关文章

  • 2024年华为杯研究生数学建模竞赛C题 波形机理建模+GBDT 进阶完整文章+代码+高级可视化
    2024年华为杯研究生数学建模竞赛C题波形机理建模+GBDT完整文章代码|进阶可视化全部问题已经更新完成,可视化图表20余张,代码量千余行,实在累到了…由于篇幅原因,此处放出部分内容供参考~完整内容可以从底部名片的群中获取~问题重述该题目围绕磁性元件的磁芯损耗建模......
  • Office的部署与激活工具软件 - 初学者系列 - 学习者系列文章
    Office一直是笔者喜欢的办公软件,依托微软强大的开发实力以及人性化的操作界面,连WPS也是参考的Office的界面进行的研发。所以除了Windows操作系统,Office就是笔者的电脑里必安装的软件之一。以前笔者安装Office,都是先下载ISO文件,然后加载到虚拟光驱运行EXE文件进行安装,这个以......
  • 2、.Net 前端框架:ASP.NET MVC - .Net宣传系列文章
    ASP.NETMVC(Model-View-Controller)是微软提供的用于构建动态网站的服务器端Web应用程序框架。它是ASP.NET平台的一部分,遵循MVC设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),以实现关注点分离和更易于管理的代码。ASP.NETMVC的关键特性包......
  • 网站后台样式错乱,文章详情页打不开
    根据您提供的信息,网站后台样式错乱、文章详情页打不开,以及前台页面无法访问的问题,可能是由于服务器防火墙拦截了某些URL导致的。具体原因如下:可能的原因中毒导致:确认网站是否被植入恶意代码或病毒。升级到最新版本,并进行查毒处理。服务器防火墙拦截:宝塔面板或其他防......
  • 后台发布文章时,跳到重新登录界面
    根据描述,问题的原因在于网站已经启用了HTTPS协议,但是管理员却使用HTTP协议访问后台,这可能导致了一些安全机制上的冲突,比如点击发布文章时会被重定向到登录界面。解决方法为了让网站在HTTP访问时强制跳转到HTTPS,您可以采取以下步骤:配置Web服务器:Apache:编辑站点配置文件(通常......
  • Java反序列化利用链篇 | CC1链_全网最菜的分析思路【本系列文章的分析重点】
    CC1链_全网最菜的分析思路1你必须知道的点1.1反序列化利用链的起点是readObject()方法Java的序列化机制允许将对象的状态保存到一个字节流中,之后可以从这个字节流中恢复(或“反序列化”)出对象。这个过程中,ObjectInputStream类负责读取这些字节流,并尝试根据包含的类型信息重新......
  • 帝国CMS搬家后无法发文章或者上传图片无法显示?
    如果你在搬家后遇到无法发文章或上传图片的问题,通常是因为权限设置不当导致的。以下是一些详细的步骤来解决这些问题:1.检查目录权限无法发文章检查栏目目录及子文件夹权限确保栏目目录及其子文件夹具有适当的权限。通常需要将这些目录设置为 777 权限。sh chmo......
  • pyautogui+PixPin 用来长截图简直太easy了!
    最近要做几百个样式统一的网页的长截图,试了python+selenium,总是搞不定扫码登录,时间比较赶,就想看看直接使用截图软件手动做,截了几十个实在受不了了~~~~o(>_<)o~~。于是又全网搜python直接操作windows的解决方案,终于发现了pyautgui这个能满足需求的神器。先上官网pyautoguigithu......
  • 帝国CMS副页面如何实现一篇文章多个动态内容页
    信息页:调用一个模板,展示一条帝国cms的信息;副页面:调用另外一个模板,展示同一条帝国cms的信息。第一步:复制文件将e/action/ShowInfo.php文件复制一份,并重命名,比如命名为MoreInfo.php第二步:修改文件打开刚才复制并重命名的文件,并进行修改(1)找到//moreport和//缓存,大约在3......
  • 帝国CMS如何清空数据让栏目、文章id从1开始
    要在帝国CMS中清空数据并让栏目和文章ID从1开始,可以按照以下步骤操作:1.备份数据库在进行任何操作之前,请务必先备份数据库,以防意外情况导致数据丢失。备份方法通过宝塔面板备份:登录宝塔面板,选择对应的数据库,点击“备份”按钮。通过帝国CMS后台备份:登录帝国CMS后台。......