史上最快、最笨的公众号文章[阅读数、在看数]采集,哈哈

在这里插入图片描述
先前写过一篇《Python爬虫实践:如何快速、高效的爬取微信公众号阅读在看》的文章,里面介绍了四种公众号阅读数、在看数的采集方法,分别是:

第一种:使用第三方的平台获取 ​
第二种方法:使用PC端模拟点击; ​
第三种:使用第三方工具; ​
第四种:基于微信公众号平台的方式;

今天抽空把第二种方式实现了,把代码贴出来供大家参考。其中分为两个类,一个是模拟点击等操作的公共类;一个是具体执行模拟操作,进行数据采集的类。具体介绍如下:
开发环境

Python3.6+
源代码:

第一个类:模拟点击主类:

import time, random, pyperclip
from com.fy.plugs.mouse.pymouse.PyMousePlugs import PyMousePlugs

class CrawlerClickAndLook:
    def __init__(self):
        self.pmp = PyMousePlugs()
        print(self.pmp .x_dim, self.pmp .y_dim)
    
    def control(self, url):
        try:
            self.pmp.click(60, self.pmp .y_dim) #点击任务栏微信快捷方式;
            time.sleep(1)
            self.pmp.click(400, 480)#点击输入区,把鼠标置于输入状态;
            time.sleep(1)
            self.pmp.input(url)#输入链接
            time.sleep(1)#
            self.pmp.kb.tap_key(self.pmp.kb.enter_key)#回车,进行信息发送;
            time.sleep(1)
            self.pmp.click(600, 370)#打开连接
            time.sleep(random.randint(3, 6))#等待内容加载完毕
            
            self.pmp.kb.press_keys([self.pmp.kb.control_r_key, 'a'])#全选
            time.sleep(1)#
            self.pmp.kb.press_keys([self.pmp.kb.control_r_key, 'c'])#复制;
            time.sleep(1)#
            text = pyperclip.paste()
            if "阅读 "in text:
                index = text.index("阅读 ")
                click = text[index:]
                for kw in click.split("\n"):
                    if "阅读 " in kw:
                        print("阅读:", kw.replace("阅读", "").strip())
                    elif "在看" in kw:
                        print("在看:", kw.replace("在看", "").strip())
                        self.pmp.click(self.pmp .x_dim - 15, 15)#关闭详情页;
                        return 
            print(text)
        except:pass
       
if __name__ == '__main__':
    owc = CrawlerClickAndLook()
    owc.control("文章地址")

上面这个是主类,运行以后的结果如下图:
在这里插入图片描述
第二个类:模拟点击、键盘操作公共类:

from pymouse import PyMouse
from pykeyboard import PyKeyboard
import pyperclip 
from com.fy.utils.date.DateUtils import Date_Utils
class PyMousePlugs:
    def __init__(self):
        self.du = Date_Utils()
        self.pm = PyMouse()
        self.kb = PyKeyboard()        
        self.x_dim, self.y_dim = self.pm.screen_size() #–获得屏幕尺寸
    
    #向输入框中输入内容,解决了汉字无法输入的问题;
    def input(self, kw):
        pyperclip.copy(kw)#把待写入输入框的内容,添加到剪切板中;
        
        #以下语句模拟键盘点击ctrl+v
        print(self.du.getCurrentTimeStr()[11:] + "    模拟键盘点击ctrl+v\n")
        self.kb.press_key(self.kb.control_key)
        self.kb.tap_key('v')
        self.kb.release_key(self.kb.control_key)
    
    #点击
    def click(self, x, y):
        self.pm.click(x, y)#点击
    
    #多功能点击
    def clickMulti(self, x:"x轴坐标位置", y:"y轴坐标位置", button:"–1表示左键,2表示点击右键", n:"–点击次数,默认是1次,2表示双击"):
        self.pm.click(x, y, button, n)# –鼠标点击 

    #获取鼠标位置
    def option(self):
        return self.pm.position()
    
    #回车
    def enter(self):
        self.kb.tap_key(self.kb.enter_key)#回车,进行搜索

    #选择全部内容;
    def selectAll(self):
        self.pmp.kb.press_keys([self.pmp.kb.control_r_key, 'a'])#全选
        
    #选择并复制全部内容;
    def selectAndCopyAll(self):
        self.selectAll()
        self.pmp.kb.press_keys([self.pmp.kb.control_r_key, 'c'])#复制;

上面两个类,拷贝到Python开发工具中,可以直接运行,不过记得修改一下第一个类中click的x、y轴坐标点。
坐标点的确定很简单,按下“Ctrl+Alt+A”截屏时,不断变动的那两个数值即是x、y坐标轴位置。
注意事项:

1:由于是模拟点击,所以两次点击之间最好有等待间隔,如0.5秒;
​
2:环境受限。
  该种方法必须独占一台电脑,因为是模拟点击,所以不能有其他人使用;
​
3:速度受限。
​
4:该种方法可以结合FastAPI,对外提供接口,实时调用;
​
5:处理的URL受限。

一个微信号每天大概能处理8000个请求(不同环境下可能有差异),不适合大批量的实时处理。可以用于临时获取一批文章的阅读数;
微信公众号文章阅读数和在看数的采集,不管用的是那种方式,最后都是要走APP的接口,所以对采集的限制,也就是APP端的那些限制策略。如果想大批量,比如监测10万、50万、100万这种,还是需要相应的硬件和微信号的支撑的。

道高一尺魔高一丈,希望大牛们能够找到第五种、第六种方法。
在这里插入图片描述
基于微信PC端的文章阅读数、在看数的采集,大概就这么点东西,改天有空把第四种方式,想办法实现一下。

根据提供的引用内容,我们可以得知微信公众号阅读数是通过抓取文章的url链接来获取的。因此,我们可以使用Python爬虫来实现这个功能。具体步骤如下: 1. 首先需要安装requests和BeautifulSoup库,可以使用以下命令进行安装: ```shell pip install requests pip install beautifulsoup4 ``` 2. 接着,我们需要获取微信公众号文章的url链接。可以通过在微信公众号平台上手动获取,或者使用Python爬虫自动获取。 3. 获取到文章的url链接后,我们可以使用requests库发送GET请求获取文章的HTML源代码。 4. 使用BeautifulSoup库解析HTML源代码,找到包含阅读数的标签,并提取出阅读数。 5. 最后,将提取出的阅读数进行输出即可。 下面是一个示例代码,可以获取指定微信公众号最新一篇文章阅读数: ```python import requests from bs4 import BeautifulSoup # 公众号名称 name = '公众号名称' # 公众号文章页数 page = 1 # 构造请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 获取指定公众号最新一篇文章的url链接 url = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=' + biz + '&scene=124&uin=&key=&devicetype=Windows+10&version=62080079&lang=zh_CN&a8scene=0&fontgear=2' # 发送GET请求获取HTML源代码 response = requests.get(url, headers=headers) html = response.text # 使用BeautifulSoup解析HTML源代码 soup = BeautifulSoup(html, 'html.parser') read_num = soup.find('span', {'class': 'read_num'}).get_text() # 输出阅读数 print('最新一篇文章阅读数为:' + read_num) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十点数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值