本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文介绍如何利用Python和itchat库编写自动化脚本,实现每天定时向微信好友发送温馨消息的功能。首先介绍itchat库及其如何注册微信应用获取AppID和AppSecret,然后演示了如何登录微信、获取好友ID、设置定时任务,以及如何通过爬虫获取内容并发送给指定好友。项目涉及的步骤包括安装库、登录微信、编写爬虫、发送消息和配置定时任务。使用Python进行网络爬虫和微信自动化不仅有趣,还有助于提升编程技能。
Python-用Pythonitchat写一个爬虫脚本每天定时给多个女友发给微信暖心话

1. Python编程语言使用

Python语言因其简洁明了的语法和强大的库支持,成为了编程初学者和专业人士的首选。在这一章节中,我们将从基础开始,逐步深入了解Python的核心概念以及它如何被应用于实际开发中。

1.1 Python的基本概念与语法

Python是一种解释型、高级、面向对象的编程语言。它的关键字少,代码块使用缩进来表示,这使得Python代码具有很好的可读性。掌握Python的基础语法是编写有效程序的第一步。例如,Python中的变量赋值、数据类型、控制结构以及函数定义都是编写任何Python程序的基础。

# 示例:变量赋值与简单输出
name = "IT Blogger"
print("Hello, " + name)

# 控制结构 - 条件判断
age = 25
if age > 18:
    print("You are an adult.")
elif age == 18:
    print("You have just become an adult.")
else:
    print("You are a minor.")

1.2 Python的面向对象编程

随着编程技能的提升,对程序设计的理解也需要进一步深化。面向对象编程(OOP)是Python中一个重要的概念,它通过类(classes)和对象(objects)将数据和功能封装在一起,实现了代码的复用和模块化。理解继承、多态和封装是深入学习Python的重要一步。

# 示例:简单类的定义与对象创建
class Programmer:
    def __init__(self, name):
        self.name = name

    def code(self):
        print(f"{self.name} is coding.")

# 创建一个Programmer对象
python_dev = Programmer("Pythonista")

# 调用对象的方法
python_dev.code()

1.3 Python在实际开发中的应用

Python不仅在教学领域备受欢迎,在实际开发中同样有广泛的应用,如数据分析、网络开发、人工智能以及自动化测试等。Python的众多第三方库,如NumPy、Django、TensorFlow等,极大地拓展了其应用领域。了解如何将Python应用于实际项目,对于提升开发者的综合能力至关重要。

# 示例:使用requests库进行网络请求
import requests

# 发送一个GET请求
response = requests.get('https://api.github.com')

# 检查请求是否成功,并输出响应内容
if response.status_code == 200:
    print(response.json())
else:
    print("Request failed with status code", response.status_code)

以上示例展示了如何使用Python的基础语法和面向对象特性,以及如何将Python应用到网络请求的场景中。随着本章节内容的深入,我们将更全面地探索Python编程的奥秘。

2. itchat库用于微信交互

2.1 itchat库的安装与配置

2.1.1 安装itchat库的步骤

itchat是一个开源的Python库,它通过调用微信的网页版接口来实现微信消息的接收与发送。使用itchat之前,需要进行简单的安装步骤。

pip install itchat

安装完成后,你只需要在Python脚本中导入 itchat 模块,并调用 run() 函数即可启动微信登录流程。

import itchat

itchat.auto_login(hotReload=True)

上述代码中的 hotReload=True 参数可以让我们在网页版登录后自动登录微信,提升用户体验。

2.1.2 登录与验证过程

在调用 itchat.auto_login() 后,系统会输出一个二维码,用户需要使用微信扫描该二维码来登录。验证成功后,系统会显示用户的微信昵称,并开始接收消息。

itchat.run()

2.2 itchat库的核心功能实现

2.2.1 发送文本消息的方法

发送文本消息是itchat库中最基本的操作。首先,需要获取到消息对象,然后调用 send() 方法发送文本。

import itchat

# 登录微信
itchat.auto_login(hotReload=True)

# 获取最近一条消息
msg = itchat.get_msg()

# 向该用户发送文本消息
itchat.send("你好!这是一条自动回复的消息。", toUserName=msg['FromUserName'])

2.2.2 发送图片与表情的技巧

除了文本消息外,itchat也支持发送图片与表情。使用 itchat.send_image() itchat.send_emoji() 方法可以分别发送图片和表情。

# 发送图片
itchat.send_image('image_path.jpg', toUserName=msg['FromUserName'])

# 发送表情
emoji = itchat.search_images(name='微笑')['ImageList'][0]['URL']
itchat.send_emoji(emoji, toUserName=msg['FromUserName'])

2.2.3 接收消息和事件监听

itchat提供了消息监听机制,我们可以定义一个接收消息的函数,当收到消息时,该函数会被调用。

def on_message(msg):
    print(msg['Text'])

itchat.run(on_message=on_message)

2.3 itchat库的高级应用

2.3.1 好友管理与分组信息获取

itchat不仅能发送消息,还能管理好友与分组。通过调用相应的方法,我们可以获取好友列表和分组信息。

# 获取好友列表
friends_list = itchat.get_friends(update=True)
print(friends_list)

# 获取分组信息
groups = itchat.get_chatrooms(update=True)
print(groups)

2.3.2 个人资料的读取与修改

我们还可以获取和修改自己的个人资料。 itchat.update_profile() 方法可以用来更新个人资料。

# 获取个人资料
my_info = itchat.get_user_info("filehelper")
print(my_info)

# 修改个人资料
itchat.update_profile(NickName='新昵称')

以上这些内容仅是itchat库的一部分基础功能,但已经展示出了利用Python与微信交互的强大潜能。在后续章节中,我们将探索更多高级应用和技巧。

3. 微信公共API通信

微信作为一个强大的社交平台,其提供的公共API为开发者打开了与微信生态互动的大门。通过这些API,开发者能够实现自动化的消息发送、接收消息、管理好友关系等功能,极大地丰富了与微信相关的应用和服务。本章将深入探讨微信公共API的原理、应用以及如何实践高级功能。

3.1 微信API的原理与应用

3.1.1 公共API的接入与权限管理

微信公共API允许开发者通过编程的方式与微信服务器进行通信。首先,需要有一个微信公众号或微信小程序,并获取相应的API密钥和权限。接入过程中,开发者需要注册并验证自己的开发者账号,创建应用并获取AppID和AppSecret。这些信息对于调用API是必须的,并且每次API调用都需要验证身份,保证了API的安全性。

开发者使用这些密钥信息,通过OAuth 2.0协议进行用户身份的验证和授权,从而获得access_token,这是调用大多数API的必要凭证。access_token有时效性,并且需要定期刷新。以下是一个获取access_token的基本示例代码:

import requests

def get_access_token(appid, appsecret):
    url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={appsecret}"
    response = requests.get(url)
    access_token_data = response.json()
    return access_token_data.get('access_token'), access_token_data.get('expires_in')

appid = 'YOUR_APPID'
appsecret = 'YOUR_APPSECRET'

access_token, expires_in = get_access_token(appid, appsecret)
print(f"Access Token: {access_token}, Expires In: {expires_in} seconds")

在这段代码中,我们首先定义了一个函数 get_access_token ,它通过HTTP GET请求向微信服务器发送请求以获取access_token。然后我们打印出获取到的access_token和它的过期时间(以秒为单位)。

3.1.2 API请求与响应格式

使用access_token调用微信API时,需要遵循一定的HTTP请求格式。一般来说,大多数API的请求格式为:

GET https://api.weixin.qq.com/cgi-bin/{module}/{method}?access_token={access_token}&{other_parameters}

或者使用POST方式发送数据:

POST https://api.weixin.qq.com/cgi-bin/{module}/{method}

在请求中, {module} {method} 分别代表了模块和具体的方法名, {other_parameters} 代表了其他需要的参数。对于POST请求,还需要在HTTP头部设置 Content-Type application/json ,并发送JSON格式的数据体。

微信API的响应格式通常是JSON格式,其中包含了操作成功或失败的状态码、错误信息以及返回的数据。开发者需要根据状态码进行逻辑判断,并合理处理返回的数据。下面是一个处理API响应的基本示例代码:

def process_api_response(response):
    result = response.json()
    if result.get('errcode') == 0:
        return result.get('data')
    else:
        error_msg = result.get('errmsg', 'Unknown Error')
        raise Exception(f"API Error: {error_msg}")

response = requests.get(url)
data = process_api_response(response)
print(data)

在这个函数 process_api_response 中,我们首先将响应解析成JSON格式,然后根据返回的 errcode 字段判断是否成功。如果成功,返回 data 字段的数据;如果失败,则抛出异常,并包含错误信息。

3.2 微信API的高级功能实践

微信API的高级功能,如获取好友标签和备注信息、发送朋友圈动态与评论等,为开发者提供了更深层次的互动能力。下面将详细介绍如何实践这些高级功能。

3.2.1 获取好友标签和备注信息

要获取好友的标签信息,开发者可以通过调用 get_user_info API方法。此方法需要传入用户的OpenID,可以是通过消息交互获取,也可以通过其他方法获得。以下为获取好友标签信息的示例代码:

def get_user_info(access_token, open_id):
    url = f"https://api.weixin.qq.com/cgi-bin/user/info?access_token={access_token}&openid={open_id}&lang=zh_CN"
    response = requests.get(url)
    user_info = response.json()
    return user_info.get('remark'), user_info.get('tagid_list')

# 示例调用
access_token = "YOUR_ACCESS_TOKEN"
open_id = "USER_OPEN_ID"
remark, tag_ids = get_user_info(access_token, open_id)
print(f"Remark: {remark}, Tags: {tag_ids}")

在这段代码中,我们首先定义了一个函数 get_user_info ,它通过HTTP GET请求向微信服务器发送请求以获取用户信息。然后我们打印出用户的备注信息(remark)和标签列表(tagid_list)。

3.2.2 发送朋友圈动态与评论

发送朋友圈动态是微信API提供的另一个高级功能。开发者可以使用 update_circle API方法来发布一条朋友圈动态。发布成功后,还能够对这条动态进行评论。以下是发送朋友圈动态和评论的示例代码:

def update_circle(access_token, user_id, content):
    url = f"https://api.weixin.qq.com/cgi-bin/circle/update?access_token={access_token}"
    data = {
        "touser": user_id,
        "msgtype": "text",
        "text": {
            "content": content
        }
    }
    response = requests.post(url, json=data)
    return response.json()

def comment_circle(access_token, feed_id, content):
    url = f"https://api.weixin.qq.com/cgi-bin/circle/comment/add?access_token={access_token}"
    data = {
        "feed_id": feed_id,
        "text": {
            "content": content
        }
    }
    response = requests.post(url, json=data)
    return response.json()

# 示例调用
access_token = "YOUR_ACCESS_TOKEN"
user_id = "USER_ID"
feed_id = "FEED_ID"

circle_update = update_circle(access_token, user_id, "这是一条测试动态")
if circle_update.get('errcode') == 0:
    print("朋友圈动态发布成功")
    # 如果发布成功,则获取动态ID进行评论
    feed_id = circle_update.get('feed_id')
    if feed_id:
        comment_result = comment_circle(access_token, feed_id, "这是对动态的评论")
        print(comment_result)
else:
    print("朋友圈动态发布失败")

在这段代码中,我们首先定义了 update_circle 函数,用于发布朋友圈动态。然后我们定义了 comment_circle 函数,用于对发布的朋友圈动态进行评论。示例调用中,我们首先发布一条动态,如果成功,则获取动态ID用于评论。

以上内容展示了微信公共API的接入流程、请求和响应处理方式,以及实现获取好友标签备注信息和发送朋友圈动态与评论的高级功能。通过这些API功能的实践,开发者可以开发出更多与微信深度整合的应用程序,实现更多自动化、智能化的服务。

4. 定时任务设置方法

在IT行业和相关领域中,定时任务是一个重要的概念,它允许我们自动化地执行计划中的任务,如备份数据、监控系统状态、调度报告生成等。在Python中,可以使用多种库或操作系统级别的工具来设置定时任务。本章将深入探讨如何使用Python库 schedule 来设置定时任务,并介绍操作系统提供的定时服务如Linux的 cron 作业调度和Windows的任务计划程序。

4.1 使用schedule库设置定时任务

4.1.1 schedule库的安装与基本使用

schedule 是一个用于Python的轻量级库,使得编写一次性或重复的任务变得简单。首先,需要使用pip进行安装:

pip install schedule

安装完成后,可以开始编写第一个定时任务:

import schedule
import time

def job():
    print("I'm working...")

# 每隔10秒执行一次job函数
schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

上面的代码定义了一个简单的函数 job ,然后通过 schedule 库每10秒钟调用一次 job 函数。在实际应用中,我们可以将 job 函数替换为任何需要定时执行的任务。

4.1.2 定制复杂的定时规则

schedule 库提供了非常灵活的定时规则定制能力。例如,你可以设置定时任务在特定的时间、特定的周几或特定的月份执行。下面是一些示例:

# 每天上午9:30执行job函数
schedule.every().day.at("09:30").do(job)

# 每个周一上午8点执行job函数
schedule.every().monday.at("08:00").do(job)

# 每隔5分钟执行job函数,但只有在工作日的上午9:00到下午5:00之间
schedule.every(5).minutes.do(job).tag("workday_morning")
schedule.every().monday.to friday.do(job).tag("workday")

通过这种方式,我们可以精确地控制任务的执行时机。如果要取消某个已经安排的任务,可以使用 tag 方法配合 .cancel() 函数:

# 取消之前设置的周一上午8点的定时任务
schedule.every().monday.at("08:00").do(job).tag("monday_job").cancel()

4.2 利用操作系统定时服务

尽管使用Python库来设置定时任务非常方便,但在某些情况下,操作系统级别的定时服务可能会更加强大和灵活。我们来看如何在Linux和Windows系统中设置定时任务。

4.2.1 Linux的cron作业调度

Linux系统的 cron 是一个用于安排周期性出现任务的守护进程。在大多数Linux发行版中, cron 服务会默认安装并运行。要编辑当前用户的 crontab 文件,可以使用以下命令:

crontab -e

这个命令会打开一个文本编辑器,让你添加或编辑定时任务。每一行代表一个任务,格式如下:

* * * * * command to execute
- - - - -
| | | | |
| | | | +-- Year        (optional)
| | | +---- Day of the Week  (0 - 7) (Sunday=0 or 7)
| | +------ Month         (1 - 12)
| +-------- Day of the Month   (1 - 31)
+---------- Hour          (0 - 23)

例如,要每天早上7点备份数据库,可以添加以下行:

0 7 * * * mysqldump -u username -pPASSWORD database_name > /path/to/backup/directory/db_backup_$(date +\%Y\%m\%d).sql

确保在 crontab 文件中保存并退出, cron 会自动加载新的作业。

4.2.2 Windows的任务计划程序

在Windows系统中,可以使用 任务计划程序 来创建、监控和管理任务。通过控制面板可以找到并打开它。以下是通过命令行创建定时任务的基本示例:

schtasks /CREATE /SC DAILY /TN "Backup Task" /TR "C:\path\to\your\backup\script.bat" /ST 07:00

这将在每天早上7点执行位于 C:\path\to\your\backup\script.bat 的批处理文件。 schtasks 命令非常强大,你可以使用它创建非常复杂的任务调度。

总结以上内容, schedule 库使得在Python中设置定时任务变得简单和直观。对于更高级的用例,可以考虑使用Linux的 cron 或Windows的 任务计划程序 ,它们提供了更多的定制选项和强大的功能。在实际操作中,我们应根据具体任务需求、系统的稳定性和维护的便利性来选择最适合的工具。

5. 网络爬虫技能实践

5.1 requests库进行HTTP请求

5.1.1 发送GET和POST请求

在Python中,requests库是一个非常流行的第三方库,它简化了使用Python进行HTTP请求的过程。GET和POST请求是Web开发中最常见的两种HTTP请求方式。在进行网络爬虫开发时,GET请求用于获取数据,而POST请求则常用于提交数据或与服务器进行交互。

使用requests库发送GET请求

以下是一个使用requests库发送GET请求的基本示例:

import requests

# 发送GET请求
response = requests.get('http://httpbin.org/get')

# 输出响应内容
print(response.text)

在这个示例中,我们首先导入了requests模块,然后使用 get 方法向指定的URL发送GET请求,并将返回的响应存储在变量 response 中。最后,我们打印出响应的原始文本内容。

使用requests库发送POST请求

POST请求通常用于向服务器提交数据或发送登录信息。以下是一个发送POST请求的示例:

import requests

# 发送POST请求
data = {'key': 'value'}  # 这里是提交的数据
response = requests.post('http://httpbin.org/post', data=data)

# 输出响应内容
print(response.text)

在这个示例中,我们同样导入了requests模块,并使用 post 方法向指定URL发送POST请求。 data 参数包含了我们希望发送的数据,最后打印出服务器返回的响应文本。

5.1.2 处理请求异常和响应数据

网络请求可能会因为多种原因失败,例如网络连接问题、服务器错误等。因此,在发送HTTP请求时,需要对可能的异常进行处理,以确保程序的健壮性。

try:
    response = requests.get('http://httpbin.org/get')
    response.raise_for_status()  # 如果请求返回的状态码不是200,则引发HTTPError异常
    print(response.json())  # 假设响应内容是JSON格式,直接以字典形式处理
except requests.exceptions.HTTPError as errh:
    print ("Http Error:",errh)
except requests.exceptions.ConnectionError as errc:
    print ("Error Connecting:",errc)
except requests.exceptions.Timeout as errt:
    print ("Timeout Error:",errt)
except requests.exceptions.RequestException as err:
    print ("OOps: Something Else",err)

在这个异常处理示例中,我们使用了try-except结构来捕获可能发生的异常,并根据不同的异常类型打印出相应的错误信息。此外, raise_for_status() 方法用于检查HTTP响应的状态码,并在响应状态码指示错误时抛出异常。

处理响应数据时,常常需要根据响应的类型进行解析。如果响应内容是JSON格式,可以直接使用 response.json() 方法将其转换为Python字典。如果响应内容是HTML或其他格式,则可能需要使用专门的解析库如 BeautifulSoup lxml 进行解析。

5.2 解析HTML内容

5.2.1 BeautifulSoup库的安装与应用

BeautifulSoup库的安装

BeautifulSoup是一个Python库,用于从HTML或XML文件中提取数据。它能够解析HTML文档,并提供简单的API来遍历文档树或搜索文档结构。

安装BeautifulSoup库非常简单,可以通过pip命令安装:

pip install beautifulsoup4
BeautifulSoup库的应用

BeautifulSoup库主要通过解析器解析HTML文档。常用的解析器有Python内置的 html.parser ,以及第三方解析器如 lxml 。下面是一个使用BeautifulSoup解析HTML文档的例子:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
<title>The Dormouse's story</title>
</head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>

soup = BeautifulSoup(html_doc, 'html.parser')  # 使用html.parser解析器解析HTML

print(soup.prettify())  # 打印格式化后的HTML内容

在这个示例中,我们首先导入了BeautifulSoup类,然后创建了一个BeautifulSoup对象 soup ,它将我们的HTML文档作为输入,并使用 html.parser 作为解析器。 prettify 方法用于打印出格式化的HTML,使其更加易于阅读。

5.2.2 lxml库的性能比较与选择

lxml库的安装

lxml是一个高性能的XML和HTML的解析库。它基于C语言库libxml2和libxslt实现,并且是唯一能够替代xml.etree.ElementTree的库。它不仅快速,还具有强大的XPath查询和CSS选择器功能。

安装lxml库同样可以使用pip命令:

pip install lxml
lxml库与BeautifulSoup的性能比较

当进行大量的数据爬取和解析时,性能成为了一个重要的考虑因素。lxml通常会比BeautifulSoup更加高效,因为它使用了C语言的底层库来加速解析过程。

功能 BeautifulSoup lxml
解析速度
CPU消耗
内存消耗
代码简洁性
兼容性

在选择使用哪个库时,需要根据实际需要进行权衡。如果性能是首要考虑因素,并且对内存和CPU使用有严格要求,那么选择lxml可能是更好的选择。如果代码的可读性和易用性更为重要,那么BeautifulSoup则更加适合。

5.3 Python网络爬虫的综合应用

5.3.1 爬虫设计思路和框架构建

构建一个网络爬虫,首先需要明确爬虫的目的,比如爬取的数据类型、数据源网站的结构、数据的使用方式等。接下来,设计爬虫的工作流程和框架,确保爬虫具有良好的模块化和扩展性。

设计思路
  1. 确定爬虫目的 :明确爬取的数据类型和数据需求,例如新闻、商品信息、学术论文等。
  2. 分析网站结构 :使用浏览器的开发者工具分析目标网站的DOM结构,定位数据所在的标签和类名。
  3. 编写爬虫逻辑 :根据分析结果编写爬虫的代码逻辑,使用合适的选择器提取数据。
  4. 存储数据 :确定数据存储的方式,如本地文件、数据库等。
  5. 遵守规则 :遵守robots.txt协议和网站的使用条款,合理设置请求头,避免对目标网站造成过大压力。
构建框架

一个基本的爬虫框架通常包括以下几个部分:

  • 数据提取 :负责从网页中提取所需数据。
  • 数据处理 :对提取的数据进行清洗和格式化。
  • 数据存储 :将处理好的数据存储到指定位置。
  • 请求管理 :控制请求的发送,包括频率限制和异常处理。
  • 调度器 :管理爬取任务的执行,如队列处理。

以下是一个简单的爬虫框架的伪代码:

class MyCrawler:
    def __init__(self):
        # 初始化一些需要的变量,例如请求头、代理等
        self.headers = ...

    def fetch(self, url):
        # 发送HTTP请求并获取网页内容
        pass

    def parse(self, html):
        # 解析HTML内容并提取数据
        pass

    def save(self, data):
        # 将提取的数据保存到文件或数据库中
        pass

    def run(self, urls):
        # 爬虫的运行逻辑
        for url in urls:
            html = self.fetch(url)
            data = self.parse(html)
            self.save(data)

# 使用示例
crawler = MyCrawler()
urls = ['http://example.com/page1', 'http://example.com/page2']
crawler.run(urls)

5.3.2 遵守Robots协议与反爬虫机制应对

遵守Robots协议

Robots协议是互联网上的一种爬虫行为规范,它定义了哪些爬虫可以访问网站的哪些部分。遵守Robots协议是网络礼仪的重要一部分,也是许多网站流量管理的基本要求。

应对反爬虫机制

网站可能会使用各种手段来限制爬虫的爬取行为,例如:

  • IP限制 :通过对访问频率的限制,阻止同一IP地址的频繁访问。
  • 用户代理检测 :检查请求头中的User-Agent字段,阻止非浏览器的访问。
  • 验证码 :在访问时要求用户输入验证码,以区分用户和爬虫。

应对策略包括:

  • 设置合理的请求间隔 :避免短时间内高频访问,可以通过添加随机等待时间来降低被封的风险。
  • 使用代理池 :通过更换不同的IP地址来绕过IP限制。
  • 动态修改用户代理 :模拟真实浏览器的行为,通过更换不同的用户代理来绕过用户代理检测。
  • 使用验证码识别服务 :对于验证码问题,可以考虑使用第三方的验证码识别服务。
  • 模拟登录 :对于登录后才能访问的数据,可以使用模拟登录的方式来获取。

应对反爬虫机制需要灵活的策略,同时在编写爬虫时,应当始终坚持不干扰网站正常运行的原则。

6. 微信自动化编程实践

6.1 编写暖心话自动发送脚本

要实现微信自动化编程实践,首先我们以编写一个暖心话自动发送脚本为例。这个脚本的设计可以包括以下几点:

  1. 定时发送逻辑:我们可以使用前面提到的 schedule 库来设定定时任务。例如,我们希望每天早上8点发送一条正能量的问候语给我们的朋友。
import schedule
import time
import itchat

# 登录微信
itchat.auto_login(hotReload=True)

# 定时发送消息的函数
def send_warm_words():
    friends = itchat.get_friends(update=True)
    for friend in friends:
        if friend['RemarkName'] == '好友昵称':  # 可以指定特定好友
            itchat.send('早上好!新的一天开始啦,愿你拥有美好的一天!', toUserName=friend['UserName'])

# 设置定时任务,每天的8:00执行send_warm_words函数
schedule.every().day.at("08:00").do(send_warm_words)

# 开始运行定时任务
while True:
    schedule.run_pending()
    time.sleep(1)
  1. 动态获取并发送暖心话语:我们希望每天都能发送一条不一样的暖心话。我们可以从网上获取一个包含正能量语句的列表,从中随机选择一条发送。
import random

# 加载暖心话语列表
warm_words_list = [
    "加油!你比你想象的更强大。",
    "每天都有新的阳光,新的希望。",
    "无论你身在何处,请保持微笑。",
    # ... 更多话语
]

# 选择一条随机的暖心话语
def choose_warm_word():
    return random.choice(warm_words_list)

# 修改send_warm_words函数,使用choose_warm_word获取暖心话语
def send_warm_words():
    # ... 之前的逻辑
    for friend in friends:
        # ... 之前的逻辑
        itchat.send(choose_warm_word(), toUserName=friend['UserName'])

6.2 脚本的扩展与维护

扩展与维护自动化脚本是确保其长期有效运行的关键。以下是一些可以采取的步骤:

  1. 增加个性化回复和交互功能:让脚本根据接收到的消息内容做出更个性化的反应。
# 修改send_warm_words函数,增加对收到消息的响应
def send_warm_words():
    # ... 之前的逻辑
    for friend in friends:
        # ... 之前的逻辑
        if not itchat.is_start_with("早上好"):
            itchat.send("好的,那我们聊聊天吧!", toUserName=friend['UserName'])
        else:
            itchat.send(choose_warm_word(), toUserName=friend['UserName'])
  1. 定期检查与更新脚本依赖:确保使用的库是最新的,避免因为库的更新导致脚本出错。
pip install --upgrade itchat schedule

脚本的维护也是自动化实践的一部分。虽然上述步骤演示了如何简单地扩展功能,但实际应用中还需要考虑异常处理、用户反馈机制以及对微信API变更的适应性等问题。这些都会影响脚本的稳定性和用户体验。随着脚本变得越来越复杂,可能还需要引入版本控制和单元测试来保证代码质量。

为了进一步提升脚本的可靠性,可以考虑编写一些辅助脚本来检测运行状态,如日志记录、异常报警等功能,确保脚本在自动化运行过程中的健壮性。


现在,我们已经完成了微信自动化编程实践的初步介绍。下一章节,我们将深入探讨微信公共API的高级功能实践,如获取好友标签和备注信息,发送朋友圈动态与评论等。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文介绍如何利用Python和itchat库编写自动化脚本,实现每天定时向微信好友发送温馨消息的功能。首先介绍itchat库及其如何注册微信应用获取AppID和AppSecret,然后演示了如何登录微信、获取好友ID、设置定时任务,以及如何通过爬虫获取内容并发送给指定好友。项目涉及的步骤包括安装库、登录微信、编写爬虫、发送消息和配置定时任务。使用Python进行网络爬虫和微信自动化不仅有趣,还有助于提升编程技能。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐