从“什么值得买”抓取特价信息并发送至微信

本文介绍了如何编写一个程序,定时从“什么值得买”网站抓取特价信息,并通过微信企业号发送通知。程序分为HTTP处理、文件处理和微信接口三个模块,使用jsoup解析DOM,通过微信API发送消息,确保已发送信息不会重复发送。目前遇到的问题是如何稳定抓取页面,因为需要处理浏览器cookie。
摘要由CSDN通过智能技术生成

声明: 本博文和相关代码仅供个人学习使用。

需求

现在购物网站越来越多,优惠常常有,但是又不一定正好被你撞见,而且每天上网逛商城也挺浪费时间的。偶然看到优惠信息了吧,又已经过期或者被秒杀光了。所以我想做一个程序能够定时在网站上搜索相关产品的优惠信息,在抓到信息后第一时间通知自己。去所有电商网站抓取肯定不现实,最方便的做法就是直接去类似“什么值得买”或者”买个便宜货”这类的消息聚合网站上提取信息啦。

程序要做到的:

  • 定时抓取相关关键词的优惠信息
  • 发现新的优惠发送微信通知(这里使用微信企业号开发平台)
  • 已经发送过的信息不再发送第二次

首先先把最终效果展示一下 :

这里写图片描述

已经发送过的信息不会重复发送

这里写图片描述

微信会收到优惠信息的标题,发布时间以及连接地址,这样就可以直接在手机端打开查看了。

程序相关设计

模块设计

大致分为:HTTP处理、文件处理、微信接口三个部分。简要介绍一下,具体代码可以看附录的Github项目。

HTTP处理

需要实现项目如下:

  • 简单的http的GET\POST请求
  • 处理网页DOM文档,将优惠信息提取出来
  • 设计优惠信息的数据结构

具体代码不贴了,GET\POST代码网上一大堆。处理DOM文档主要用的jsoup,文档也是一大堆。优惠信息主要只记录标题、详情、日期、时间、URL连接这些内容。

文件处理

只要实现:将优惠信息的数据列表存成文件、从文件中读取数据列表即可。简单接口如下:

//读取
public static List<FoundItem> read() throws FileNotFoundException, IOException;
//写入
public static void write(List<FoundItem> items) throws IOException;

微信

主要实现两个功能:获取token,发送信息。由于发送信息时候的url需要带上token,因此一个完整的发送消息过程应该以此调用上述两个过程的代码。
1、 获取token

//获取token用Http get即可,在地址中带上corpId, corpsecret字符串即可<
在Python中抓取微信聊天记录并将数据写入Excel然后发送到邮箱通常涉及到几个步骤: 1. **获取微信聊天记录**: - 微信聊天记录一般保存在本地,通过API直接访问不太现实。如果想要获取聊天记录,通常需要借助第三方工具,比如微信PC版的`WeChatSpy`等,它们可以导出聊天记录到特定的文件格式(如CSV或JSON),然后再进行处理。 2. **解析和读取数据**: - 导出的文件需要先转换成易于操作的数据结构,如pandas DataFrame。如果你的聊天记录是CSV格式,可以直接读取;如果是JSON,可以用`json`模块。 ```python import pandas as pd data = pd.read_csv('wechat_chat.csv') # 或者 data = pd.read_json('chat_data.json') ``` 3. **写入Excel**: - 使用`pandas`库将数据写入Excel文件,例如`to_excel`函数。 ```python data.to_excel('weixin_conversation.xlsx', index=False) ``` 4. **发送邮件**: - 需要使用`smtplib`库发送SMTP邮件,首先设置发件人、收件人、SMTP服务器信息,然后创建`EmailMessage`对象并添加附件。 ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders msg = MIMEMultipart() msg['From'] = 'your_email@example.com' msg['To'] = 'recipient_email@example.com' msg['Subject'] = '微信聊天记录' # 添加附件 with open('weixin_conversation.xlsx', 'rb') as attachment: part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', f'attachment; filename="weixin_conversation.xlsx"') msg.attach(part) smtp_server = 'smtp.example.com' smtp_port = 587 password = 'your_password' server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(msg['From'], password) server.send_message(msg) server.quit() ``` 请注意,以上步骤涉及隐私和法律问题,未经用户同意抓取和分享他人的聊天记录可能会触犯法律法规,因此在实际操作前务必确保合法性,并遵守微信的使用条款。同时,上述代码仅为示例,实际环境中可能需要根据实际情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值