Python3,20行代码,通过微信电脑版爬取朋友圈数据,老板再也抓不到我上班看手机了!!!

2023-11-15

1、引言

小屌丝:鱼哥,忙吗??
小鱼:忙!!
小屌丝:想问你件事。
小鱼:在忙,没时间!!
小屌丝:关于妹子的事~ ~
小鱼:不忙,妹子被欺负了?妹子下班晚不好打车?妹子还没吃夜宵???
小屌丝:我擦… 你真的是见色起意
小鱼:没有的事,我这么正儿八经的人,怎么会呢。。。
小屌丝:正儿八经是真的, 但是人不人的,就不知道了。。。
小鱼:不扯,妹子咋的了,我这着急担心着呢…
小屌丝:就是我这不刚刚处了一个女CP嘛,然后我…就想时刻关注她的朋友圈动态,但是我又不能实时拿手机刷朋友圈,你懂得…
小鱼:这个… 有点… 不太…
小屌丝:我的CP还有个闺蜜,1.8大长腿,A4腰,关键还会跳踏踏舞…
小鱼:别说了,我能,我会,我行!!!
在这里插入图片描述

2、桌面图形界面工具介绍

一想到朋友圈,我们的第一印象就是在手机端看朋友圈,
但是最近电脑版WeChat,也可以看朋友圈了,

不知道各位小伙伴是否有注意到,反正对小鱼来说,这上班摸鱼又多了一个好方式!

在这里插入图片描述

之前我们爬手机端,一般都使用Appium来搞,
虽然爬取很容易,但是Appium的环境配置,确实不容易。
只有经历过的人,才知道其中的快乐

如果有的小伙伴不了解Appium的话,可以看看小鱼的Appium系列博文,保证你"一战到底"。
从基础入门→框架搭建→源码实战,一个系列的!

小屌丝:鱼哥,其实你说的一点都没错,所以看看你有没有什么好点的法子,让我简单并快乐着。
小鱼:必须的, 今天我们就来用两个工具+15行代码,就搞定。
在这里插入图片描述

2.1 PyAutoGUI

小屌丝:鱼哥,PyAutoGUI是个啥嘞?
小鱼:那按键精灵知道不?
小屌丝:这个我知道, 这是一款能录制鼠标和键盘操作,然后还可以进行自动操作工具。
小鱼:对头,那PyAutoGUI的功能跟它类似的。

1、操作方式
PyAutoGUI 通过 Python 脚本,控制计算机的鼠标和键盘,以达到自动和桌面客户端程序进行交互操作的目的。

2、支持系统
支持Windows,Linux,macOS。
除了支持计算机的鼠标和键盘控制之外,还能提供简易的弹出框,并且支持进行截。
3、使用方法
先导入PyAutoGUI,然后就是各种骚操作

import pyautogui

各种操作如下

  • 通过 pyautogui.size() 获取屏幕的高度和宽度;
  • 通过 pyautogui.position() 获取鼠标在屏幕上的坐标;
  • 通过 pyautogui.moveTo(x, y) 移动鼠标到指定的坐标;
  • 通过 pyautogui.click() 操纵鼠标单击;
  • 通过 pyautogui.click(x, y) 操纵鼠标单击指定的坐标位置;
  • 通过 pyautogui.doubleClick() 操纵鼠标双击;
  • 通过 pyautogui.write() 执行键盘键的输入;
  • 通过 pyautogui.press(‘xxx’) 按下指定的键名;
  • 通过 pyautogui.keyDown(‘xxx’) 按住指定的键名;
  • 通过 pyautogui.hotkey(‘xxx’, ‘xxx’) 执行热键操作;
  • 通过 pyautogui.keyUp(‘xxx’) 松开指定的键名;

上面就列举了常用的,也是足够我们日常使用了。

小屌丝:这么厉害嘛,我喜欢这款,
小鱼:别着急下定论,虽然这款很nice,但是也有美中不足的地方。

PyAutoGUI 只能机械地对鼠标键盘进行操作,而不能识别或分析程序或计算机桌面的情况,也不能获取程序内的所有内容。

小屌丝:咋还这样啊,那有没更好一点的工具啊,
小鱼:接着往下看。

2.2 PyWinAuto

虽然PyAutoGUI优缺点,但是没关系,PyWinAuto就是最好的补救工具了,

PyAutoGUI与PyWinAuto 是不是好基友我不知道,但是一定是好CP。

PyWinAuto简介:

PyWinAuto 是一组用于自动化Microsoft Windows GUI的python模块,所以 PyWinAuto 只能用于 Windows 环境下的桌面客户端程序

PyWinAuto 通过「Win32 API」和「MS UI Automation」来识别、判断和获取程序的属性,并依赖上述两种技术实现对程序控件的控制。
同时,PyWinAuto 也提供了键盘和鼠标的控制操作,在某些控件无法进行操作的情况下,可以继续借助鼠标键盘来完成操作。

PyWinAuto使用:

因为每个工具都有它的独特性,所以,相对于PyAutoGui,则PyWinAuto的使用就有点点复杂化。
我们来看看。

安装

pip install pywinAuto

启动


from pywinauto.application import Application
#启动notepad
app = Application(backend="uia").start('notepad.exe')

常规操作

# -*- coding:utf-8 -*-
# @Time   : 2021-08-19
# @Author : carl_DJ

from pywinauto.application import Application

#启动notepad
app = Application(backend="uia").start('notepad.exe')

#获取主窗口
dlw = app['窗口名称']

#获取主程序窗口内控件
but = dlw['Button']

#对控件按钮进行操作
but.click()

小屌丝:鱼哥,我想问一下,我们怎么能知道程序内各个控件的结构呢?
小鱼:两种方法获得,如下:

  • 方法一:使用控件的print_control_identifiers() 方法或 dump_tree() 方法,输出控件下所有控件的信息。
  • 方法二:使用 PyWinAuto 推荐的几个第三方程序,如:Spy++,Inspect.exe等,先对程序的控件结构进行获取,在编写代码。

3、代码实战

知道了PyWinAuto 和 PyAutoGui这两个工具的使用方法,
接下来,就到了激动人心的环节:爬取朋友圈数据。

老规矩,直接上代码:

# -*- coding:utf-8 -*-
import psutil
import pywinauto
from pywinauto.application import Application


'''
psutil 用于获取微信电脑版的进程信息
pywinauto 用于自动化控制微信电脑版
'''
def getWechat():

    #初始化默认进程
    PID = 0
    #我们把进程ID来提供给PyWinAuto ,以便于链接微信电脑版
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid','name'])
        except psutil.NoSuchProcess:
            pass
        else:
            if 'Wechat.exe' == pinfo['name']:
                PID = pinfo['pid']

    #PyWinAuto实例化并启动应用
    app = Application(backend='uia').connect(process= PID)

    #控制微信电脑版,把朋友圈打开

    win = app['微信']
    pyq_but = win.child_window(title = '朋友圈',control_type = "Button")
    pyq_but.draw_outline()
    cords = pyq_but.rectangle()
    #点击朋友圈按钮
    pywinauto.mouse.click(button = 'left',coords = (cords.left + 10,cords.top + 10))
    pyq_win = app['朋友圈']
    pyq_win.drav_outline()
    #获取朋友窗口里面各个控件结构
    print(f'打印朋友圈控件结构:{pyq_win.dump_tree}')

if __name__ == '__main__':
    getWechat()

由于隐私性,小鱼就截取一段的内容,展示一下。
在这里插入图片描述

我不会把朋友圈的妹子信息展示出来的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3,20行代码,通过微信电脑版爬取朋友圈数据,老板再也抓不到我上班看手机了!!! 的相关文章

  • 分配列表的多个值

    我很想知道是否有一种 Pythonic 方式将列表中的值分配给元素 为了更清楚 我要求这样的事情 myList 3 5 7 2 a b c d something myList So that a 3 b 5 c 7 d 2 我正在寻找比手
  • 高效地将大型 Pandas 数据帧写入磁盘

    我正在尝试找到使用 Python Pandas 高效地将大型数据帧 250MB 写入磁盘或从磁盘写入的最佳方法 我已经尝试了所有方法Python 数据分析 但表现却非常令人失望 这是一个更大项目的一部分 该项目探索将我们当前的分析 数据管理
  • 如何检索分配给 Django 中的组的所有权限

    我正在执行一项任务来检索分配给 Django 中的组的一组权限 我可以使用以下代码获取创建的组 但无法使用它来获取分配给它们的权限 from django contrib auth models import Group Permissio
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • 如何将 Pyspark Dataframe 标题设置到另一行?

    我有一个如下所示的数据框 col1 col2 col3 id name val 1 a01 X 2 a02 Y 我需要从中创建一个新的数据框 使用 row 1 作为新的列标题并忽略或删除 col1 col2 等行 新表应如下所示 id na
  • Bokeh 中单独的节点和边缘悬停工具?

    我正在尝试为 Bokeh 中的节点和边缘获取单独的悬停工具提示 但未能使其正常工作 有人可以指出我做错了什么吗 我相信代码应该如下所示 from bokeh io import show output notebook from bokeh
  • 一个类似 dict 的 Python 类

    我想编写一个自定义类 其行为类似于dict 所以 我继承自dict 不过 我的问题是 我是否需要创建一个私有的dict我的成员 init 方法 我不明白这个有什么意义 因为我已经有了dict如果我只是继承自的行为dict 谁能指出为什么大多
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 导入目录下的所有模块

    有没有办法导入当前目录中的所有模块 并返回它们的列表 例如 对于包含以下内容的目录 mod py mod2 py mod3 py 它会给你
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • 如何全局安装 Python(开发)依赖项,以便我不必在每个 venv 中重新安装它们?

    我希望在为每个项目创建的每个 venv 虚拟环境 中都可以使用一些 Python 依赖项 例如 black flake8 和 pytest 这可能吗 如果可以 如何实现 我想安装这三个once在我的主要 Python 安装下 我必须在启动新
  • 如何处理 Tkinter 中的窗口关闭事件?

    如何在 Python Tkinter 程序中处理窗口关闭事件 用户单击 X 按钮 Tkinter 支持一种称为协议处理程序 http web archive org web 20201111215134 http effbot org tk
  • 异步异常处理程序:在事件循环线程停止之前不会被调用

    我正在我的异步事件循环上设置异常处理程序 但是 在事件循环线程停止之前 它似乎不会被调用 例如 考虑以下代码 def exception handler loop context print Exception handler called
  • 在 for 循环中访问 itertools 产品的元素

    我有一个列表列表 是附加 itertools 产品的一些其他结果的结果 我想要的是能够使用 for 循环访问列表列表中列表的每个元素 但我无法访问所有元素 我只能访问最后一个列表的元素 结果是一个非常巨大的列表列表 例如 1 2 4 3 6
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • 当训练和测试的特征数量不同时,如何处理生产环境中的One-Hot Encoding?

    在做某些实验时 我们通常在 70 上进行训练 在 33 上进行测试 但是 当您的模型投入生产时会发生什么 可能会发生以下情况 训练集 Ser Type Of Car 1 Hatchback 2 Sedan 3 Coupe 4 SUV 经过

随机推荐

  • PyTorch中使用预训练的模型初始化网络的一部分参数(增减网络层,修改某层参数等) 固定参数

    在预训练网络的基础上 修改部分层得到自己的网络 通常我们需要解决的问题包括 1 从预训练的模型加载参数 2 对新网络两部分设置不同的学习率 主要训练自己添加的层 一 加载参数的方法 加载参数可以参考apaszke推荐的做法 即删除与当前mo
  • 查看 elasticsearch版本号

    查看 elasticsearch版本号 输入命令 curl XGET localhost 9200 得到 name OmUcqLr cluster name elasticsearch cluster uuid AQHIcDW Q9K80U
  • 使用U盘重装MacBook Air时用到的工具和镜像

    主要是工具和镜像 非重装教程 前言 工具 镜像 前言 我之前没接触过苹果笔记本 设备是邻居的白苹果 近期因为双系统中的windows出故障了 所以索性帮他重装 用U盘重装MacBook Air教程网上有一堆 大家应该都能搜索到 主要是工具和
  • aanet

    AANet feature extractor AANetFeature conv1 Sequential 0 Conv2d 3 32 kernel size 7 7 stride 3 3 padding 3 3 bias False 1
  • VSCODE:终端界面简洁化和cmd.exe界面显示

    最近在配置vscode 想用来编写一些c和c 算法文件 编写helloword cpp文件 运行发现程序输出结果显示在终端界面 且含有一长串复杂的无用字符 因此考虑简化这个终端界面 在网上查询了众多教程 大部分都是修改launch json
  • 如何使用 Serverless 做架构和项目管理—— 三年全栈经验总结

    本文是从项目工程角度来讲解的 技术角度请参看另一个文章 真实项目代码教你四步扔了传统服务器 让你优雅使用Serverless做全栈开发 https zhuanlan zhihu com p 本文汇总了我的多个Serverless的全栈项目实
  • [c++]力扣303+304 区域和检索 二维区域和检索

    最近开始重新刷题 从链表开始 第一部分是前缀和 分为一维数组前缀和和高维数组前缀和 abandon 前缀和数组是牺牲空间换时间的方法 为了解决频繁访问数组某区间的问题 先构造出从开始到当前位置的元素的和 储存在前缀和数组中 查询的时候直接查
  • 小波神经网络(WNN)的实现(Python,附源码及数据集)

    文章目录 一 理论基础 1 小波神经网络结构 2 前向传播过程 3 反向传播过程 4 建模步骤 二 小波神经网络的实现 1 训练过程 WNN py 2 测试过程 test py 3 测试结果 4 参考源码及实验数据集 一 理论基础 小波神经
  • Java设计模式-单例模式

    模式定义 确保一个类最多只有一个实例 并提供一个全局访问点 单例模式分为饿汉式和懒汉式 懒汉式单例模式 在类加载时不初始化 饿汉式单例模式 在类加载时就完成了初始化 所以类加载比较慢 但获取对象的速度快 饿汉式 线程安全 饿汉式单例模式 线
  • 2022必备react面试题 附答案

    2022必备react面试题 1 React的严格模式如何使用 有什么用处 StrictMode 是一个用来突出显示应用程序中潜在问题的工具 与 Fragment 一样 StrictMode 不会渲染任何可见的 UI 它为其后代元素触发额外
  • 初学者对java数组中栈和堆的认识

    java数组中栈和堆的认识 1 示例 2 结论 3 图例子 1 示例 public static void main String args String Array null Array new String 3 Array 0 安徽合肥
  • NRF52832学习笔记(2)—— 添加DFU功能(基于SDK15.3)

    前言 SDK版本15 3 评估板 pca10040 在 uart 的例程中添加 DFU 功能 使用 s132 的协议栈 因为官方的 BootLoader 工程用的是s132的协议栈 一 准备工作 在开始实验之前必须先准备以下软件 gcc a
  • linux总结-常用命令(2)

    ls命令 ls命令为list的缩写 通过ls命令可以查看Linux文件夹中包含的文件及其文件权限 包括目录 文件夹 文件权限 目录信息等等 ls 选项 目录 文件 选项 a 列出目录所有文件 包含以 开始的隐藏文件 A 列出除 及 的其它文
  • MDF,LDF格式文件还原数据库

    点你的数据服务名 gt 右键 gt 附加数据库 gt 选择你要还原的数据库文件
  • mxnet——模型加载与保存

    一 加载模型与pretrain模型network相同 loading predict module data shape G 96 Batch namedtuple Batch data sym arg params aux params
  • 比特数据结构课-前言、时间复杂度

    前言 1 什么是数据结构 数据结构 Data Structure 是计算机存储 组织数据的方式 指相互之间存在一种或多种特定关系的数据元素的集合 2 什么是算法 算法 Algorithm 就是定义良好的计算过程 他取一个或一组的值为输入 并
  • 虚拟机出现错误:“无法连接MKS:套接字连接尝试次数太多,正在放弃“,无法进入系统的解决方法

    开发环境 我在windows上使用的是VMware Workstation 14 Pro Ubuntu16 04的组合进行开发 原因 自从将vm从12pro升级成了14pro之后就出现了这种问题 应该是14pro版本本身还有些问题吧 解决方
  • JVM--基础--22--字节码指令

    JVM 基础 22 字节码指令 1 字节码简介 Java字节码由操作码和操作数组成 操作码 1个字节长度 代表某种特定操作含义的数字 操作数 零至多个代表此操作码所需参数 2 字节码与数据类型 在字节码指令集中 大多数指令都有操作所对应的数
  • 力扣412 Fizz Buzz(java+python)

    给你一个整数 n 找出从 1 到 n 各个整数的 Fizz Buzz 表示 并用字符串数组 answer 下标从 1 开始 返回结果 其中 answer i FizzBuzz 如果 i 同时是 3 和 5 的倍数 answer i Fizz
  • Python3,20行代码,通过微信电脑版爬取朋友圈数据,老板再也抓不到我上班看手机了!!!

    爬取微信电脑版朋友圈数据 1 引言 2 桌面图形界面工具介绍 2 1 PyAutoGUI 2 2 PyWinAuto 3 代码实战 1 引言 小屌丝 鱼哥 忙吗 小鱼 忙 小屌丝 想问你件事 小鱼 在忙 没时间 小屌丝 关于妹子的事 小鱼