你想要“自动爬取微信公众号文章并整理成 Excel 表格”的工具,可以分成以下几个步骤实现:
🧩 一、功能目标拆解
-
输入公众号名称或ID
-
自动抓取该公众号的历史文章列表
-
提取文章信息(如标题、发布时间、链接、阅读数、点赞数等)
-
保存为 Excel 文件
⚠️ 二、微信限制说明(重要)
微信公众号文章没有开放的公开 API,微信有反爬机制:
-
微信公众平台的内容需要登录才能获取;
-
文章阅读量、点赞数只能在作者后台看到,普通爬虫无法直接获取;
-
文章列表页面通常使用 https://mp.weixin.qq.com 域名,防爬性强。
✅ 三、可行方案(推荐)
方案 1:手动获取公众号文章链接,爬取内容
✅ 可行性:高,无登录
📦 工具组合:
-
Python + requests + BeautifulSoup
-
openpyxl / pandas 用于导出 Excel
方案 2:用搜狗微信(sogou.com/weixin)作为入口
✅ 可行性:中,需处理反爬
📦 工具组合:
-
Python + Selenium 模拟浏览器
-
或调用公众号采集服务的接口(如第三方API)
方案 3:使用第三方公众号爬取服务
✅ 可行性:最高(但可能收费)
📌 示例服务:
-
WeTool(带数据导出)
-
公众号助手类服务(如新媒体管家、微小宝)
🛠️ 四、示例代码(抓取单篇文章内容)
如果你手动获取了文章链接(比如公众号文章链接):
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 示例:微信公众号文章链接
urls = [
"https://mp.weixin.qq.com/s/xxxxxxxxxxxxxxxxxxxxx",
"https://mp.weixin.qq.com/s/yyyyyyyyyyyyyyyyyyyyy",
]
data = []
for url in urls:
headers = {
"User-Agent": "Mozilla/5.0",
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
title = soup.find("h1").text.strip()
time = soup.find("em", id="publish_time").text.strip()
content = soup.find("div", class_="rich_media_content").text.strip()
data.append({
"标题": title,
"发布时间": time,
"链接": url,
"正文摘要": content[:100] # 只取前100字
})
# 保存为Excel
df = pd.DataFrame(data)
df.to_excel("公众号文章.xlsx", index=False)
📊 五、Excel 表示格式建议
序号 | 标题 | 发布时间 | 链接 | 正文摘要 |
---|---|---|---|---|
1 | xxx | 2025-06-01 | https://… | 内容前100字… |
2 | xxx | 2025-06-02 | https://… | 内容前100字… |
💡 六、如果你想要的是完整爬虫项目,我可以帮你生成一个完整目录结构和代码框架,包括:
-
输入公众号名 / URL
-
自动抓取文章标题、时间、链接
-
保存 Excel 文件
-
可选择用 GUI 或命令行
太好了,我们可以用 Python + Tkinter 来开发一个图形界面的“微信公众号文章爬虫工具”,功能是:
🎯 工具功能
-
输入微信公众号文章链接
-
支持批量输入
-
点击“开始抓取”后,抓取文章标题、发布时间、正文摘要
-
显示抓取进度
-
自动导出为 Excel 表格(.xlsx)
🧰 技术栈
-
tkinter:构建图形界面
-
requests + BeautifulSoup:爬取和解析文章页面
-
pandas:生成 Excel 文件
🗂️ 文件结构(建议)
weixin_spider_gui/
├── main.py # 主程序
├── requirements.txt # 依赖列表
├── output.xlsx # 输出的表格
🧑💻 主程序
main.py
import tkinter as tk
from tkinter import messagebox, filedialog
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 解析文章函数
def parse_article(url):
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
try:
title = soup.find("h1").text.strip()
time = soup.find("em", id="publish_time").text.strip()
content = soup.find("div", class_="rich_media_content").text.strip()
return {
"标题": title,
"发布时间": time,
"链接": url,
"正文摘要": content[:100]
}
except:
return {
"标题": "抓取失败",
"发布时间": "",
"链接": url,
"正文摘要": ""
}
# 主函数:从文本框读取链接并抓取
def start_scraping():
urls = text_box.get("1.0", tk.END).strip().splitlines()
if not urls:
messagebox.showwarning("提示", "请输入至少一个链接")
return
results = []
for i, url in enumerate(urls):
status_label.config(text=f"抓取第 {i+1}/{len(urls)} 篇...")
root.update()
article_data = parse_article(url)
results.append(article_data)
df = pd.DataFrame(results)
# 保存为 Excel
save_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel 文件", "*.xlsx")])
if save_path:
df.to_excel(save_path, index=False)
messagebox.showinfo("成功", f"成功保存为 {save_path}")
else:
messagebox.showinfo("取消", "未保存文件")
# 创建 GUI
root = tk.Tk()
root.title("微信公众号文章抓取工具")
root.geometry("600x400")
label = tk.Label(root, text="请输入公众号文章链接(每行一个):")
label.pack(pady=5)
text_box = tk.Text(root, height=15, width=70)
text_box.pack()
start_button = tk.Button(root, text="开始抓取", command=start_scraping)
start_button.pack(pady=10)
status_label = tk.Label(root, text="")
status_label.pack()
root.mainloop()
📦 依赖(requirements.txt)
requests
beautifulsoup4
pandas
openpyxl
安装方式:
pip install -r requirements.txt
📷 使用效果
-
图形界面输入微信公众号文章链接;
-
点击“开始抓取”后自动爬取;
-
弹出保存窗口,导出 Excel 文件;
-
每条最多抓取摘要 100 字。
✅ 后续功能可拓展
-
支持读取 .txt 批量链接;
-
添加“公众号主页文章列表”的抓取(需登录或逆向);
-
显示文章封面图;
-
将结果显示在界面上预览。
如果你需要我打包成 .exe(Windows 可执行程序),或者用 PyInstaller 一键生成工具,我也可以帮你处理。
你希望我把这个完整项目打包发送给你,还是直接继续添加功能如“批量链接读取”或“封面图抓取”?
了解!你用的是 macOS + Python,那我现在就教你如何使用 PyInstaller 将这个图形化爬虫工具打包成一个可以双击运行的 Mac 应用程序(.app 或 .exe 可执行文件)。
✅ 你的环境准备
1. ✅ 确保你已安装以下工具:
python3 --version # 推荐 Python 3.9 或 3.10
pip3 install pyinstaller
2. ✅ 安装依赖
在你的项目文件夹中建一个 requirements.txt 文件,内容如下:
requests
beautifulsoup4
pandas
openpyxl
安装:
pip3 install -r requirements.txt
🛠️ 打包你的
main.py
进入脚本所在目录,执行以下命令打包:
pyinstaller --windowed --onefile main.py
参数解释:
-
--windowed:不弹出终端窗口(适用于图形界面)
-
--onefile:打包成一个独立可执行文件
-
main.py:你的主程序
📁 打包完成后,目录结构如下:
dist/
└── main ← 这个是你可以双击运行的 Mac 可执行文件
build/
main.spec ← PyInstaller 配置文件
✅ 运行你的应用
./dist/main
你也可以右键 dist/main → “显示简介” → 改名为 微信公众号爬虫工具.app,就像一个 App 一样使用。
🎁(可选)生成
.app
应用图标/图标自定义
如果你想让它有 App 图标,可以用:
pyinstaller --windowed --onefile --icon=weixin.icns main.py
weixin.icns 是 .icns 格式的 Mac 图标文件,可以在线转换 PNG → ICNS。
🧼 小技巧:忽略警告、减小体积
pyinstaller --windowed --onefile --clean main.py
🧪 测试建议
打包成功后,建议在“访达”中打开 dist 目录,直接双击 main 来测试:
-
能否打开界面?
-
输入链接后是否能正常保存 Excel?
-
有没有权限错误或沙箱限制?
💬 进阶功能建议(打包后也支持)
-
多线程抓取加速
-
自动读取 .txt 链接文件
-
预览 Excel 表格抓取结果
-
加载文章封面图和二维码
-
打包成 .dmg 安装盘(可选)
需要我帮你:
✅ 整理完整项目打包目录 + 图标 + README?
✅ 提供一个 .icns 图标?
✅ 给你提供 .spec 配置文件用于二次定制?
好的!下面是一个适用于 macOS 用户的「微信公众号文章爬虫 GUI 工具」完整项目结构,包括打包用的文件、图标、README 说明等。
📁 项目目录结构(建议如下)
weixin_spider_gui/
├── main.py # 主程序(Tkinter GUI + 爬虫)
├── requirements.txt # 所需依赖
├── README.md # 使用说明
├── weixin.icns # 应用图标(Mac 使用)
├── main.spec # PyInstaller 打包配置(可选)
└── dist/ # 打包后生成的可执行文件目录(自动创建)
✅ 1.
main.py
(主程序)
👉 已在前文提供,如需,我可以再贴一次最新版代码。
✅ 2.
requirements.txt
requests
beautifulsoup4
pandas
openpyxl
✅ 3.
weixin.icns
(Mac 图标文件)
你可以下载一个微信风格图标(PNG),然后转换成 .icns 格式。推荐使用此在线工具:
🔗 https://cloudconvert.com/png-to-icns
建议图标尺寸为 1024x1024。
命名为:weixin.icns,放在根目录。
✅ 4.
README.md
# 微信公众号文章爬虫工具(GUI版)
一个图形界面的微信公众号文章爬虫工具,支持输入多个文章链接,自动爬取标题、发布时间、摘要,并导出为 Excel 文件(.xlsx)。
---
## 💻 功能说明
- ✅ 支持粘贴多个微信公众号文章链接(每行一个)
- ✅ 自动抓取文章标题、发布时间、摘要内容
- ✅ 导出为 Excel 表格(带链接)
- ✅ 图形界面操作,无需命令行
---
## 📦 安装依赖
```bash
pip install -r requirements.txt
🚀 运行方法
python main.py
🛠️ 打包为 macOS 可执行程序
安装 PyInstaller:
pip install pyinstaller
打包命令(带图标):
pyinstaller --windowed --onefile --icon=weixin.icns main.py
打包完成后在 dist/ 目录下找到你的 App 文件。
📋 示例 Excel 输出字段
标题 | 发布时间 | 链接 | 正文摘要 |
---|---|---|---|
… | … | … | … |
⚠️ 注意事项
-
微信公众号页面反爬机制较强,抓取失败可能是访问频繁或内容变动
-
本工具不支持登录获取私有数据(如阅读量、点赞数)
📎 图标说明
weixin.icns:微信风格图标,仅用于本地 GUI 美化使用。
---
## ✅ 5. 打包命令总结
```bash
# 第一次创建 .spec 文件并打包
pyinstaller --onefile --windowed --icon=weixin.icns main.py
# 或使用已有配置文件打包
pyinstaller main.spec
✅ 6. 可选:
main.spec
文件模板
如果你需要修改资源路径或添加额外数据,可以自定义 main.spec 文件,例如:
# main.spec
block_cipher = None
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[('weixin.icns', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
)
exe = EXE(
a.pure,
a.zipped_data,
a.scripts,
[],
name='微信公众号爬虫',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # True 表示弹出终端窗口,GUI建议设为 False
icon='weixin.icns'
)
✅ 7. 生成
.dmg
(可选)
打包成 .app 后,你可以用 create-dmg 生成 .dmg 安装盘:
brew install create-dmg
create-dmg dist/main.app
✅ 下一步:打包调试建议
-
先测试 python main.py 是否正常工作;
-
确保图标是 .icns 格式;
-
打包后双击运行测试 UI;
-
导出 Excel 测试功能是否可用。
我可以帮你打包这些文件打成一个 .zip 或者生成完整模板,你希望我:
-
帮你打个 GitHub 项目结构压缩包?
-
或把以上内容生成本地目录结构让你直接用?
你可以直接说“生成项目文件压缩包”或“再给我主程序最新版”。
好的,以下是最新版的 main.py 主程序代码,包括:
-
图形界面(Tkinter)
-
支持输入多条公众号文章链接(每行一个)
-
抓取标题、发布时间、正文摘要
-
抓取状态实时显示
-
导出为 Excel 文件(可选择保存路径)
✅
main.py
import tkinter as tk
from tkinter import messagebox, filedialog
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 解析微信公众号文章内容
def parse_article(url):
headers = {"User-Agent": "Mozilla/5.0"}
try:
res = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(res.text, "html.parser")
title = soup.find("h1").text.strip() if soup.find("h1") else "无法获取标题"
time = soup.find("em", id="publish_time")
time_text = time.text.strip() if time else "未知时间"
content_tag = soup.find("div", class_="rich_media_content")
content = content_tag.text.strip() if content_tag else "无正文内容"
return {
"标题": title,
"发布时间": time_text,
"链接": url,
"正文摘要": content[:100].replace("\n", "").replace("\r", "").strip()
}
except Exception as e:
return {
"标题": "抓取失败",
"发布时间": "",
"链接": url,
"正文摘要": f"错误信息:{str(e)}"
}
# 抓取按钮逻辑
def start_scraping():
urls = text_box.get("1.0", tk.END).strip().splitlines()
if not urls:
messagebox.showwarning("提示", "请输入至少一个公众号文章链接!")
return
results = []
for i, url in enumerate(urls):
status_var.set(f"正在抓取第 {i+1} / {len(urls)} 篇文章...")
root.update()
article_data = parse_article(url)
results.append(article_data)
df = pd.DataFrame(results)
save_path = filedialog.asksaveasfilename(
defaultextension=".xlsx",
filetypes=[("Excel 文件", "*.xlsx")],
title="保存 Excel 文件"
)
if save_path:
try:
df.to_excel(save_path, index=False)
messagebox.showinfo("成功", f"已成功保存为:\n{save_path}")
except Exception as e:
messagebox.showerror("错误", f"保存文件失败:{e}")
else:
messagebox.showinfo("已取消", "未选择保存路径。")
status_var.set("完成!")
# 创建主窗口
root = tk.Tk()
root.title("微信公众号文章爬虫工具")
root.geometry("700x500")
root.resizable(False, False)
# 标签
label = tk.Label(root, text="请输入公众号文章链接(每行一个):", font=("Arial", 12))
label.pack(pady=10)
# 文本框
text_box = tk.Text(root, height=20, width=85, font=("Courier", 10))
text_box.pack(padx=10)
# 状态标签
status_var = tk.StringVar()
status_var.set("")
status_label = tk.Label(root, textvariable=status_var, fg="blue", font=("Arial", 10))
status_label.pack(pady=5)
# 抓取按钮
start_button = tk.Button(root, text="开始抓取并导出 Excel", command=start_scraping, height=2, width=25, bg="#4CAF50", fg="white", font=("Arial", 12, "bold"))
start_button.pack(pady=10)
# 运行主事件循环
root.mainloop()
📋 功能说明
功能 | 说明 |
---|---|
输入链接 | 每行一个公众号文章链接(如 https://mp.weixin.qq.com/s/xxx) |
抓取字段 | 标题、发布时间、链接、正文前100字摘要 |
导出格式 | Excel(.xlsx),手动选择保存路径 |
错误处理 | 无法访问或解析失败会记录为“抓取失败” |
✅ 接下来你可以:
-
把该代码保存为 main.py
-
安装依赖:pip install requests beautifulsoup4 pandas openpyxl
-
运行:python main.py
-
测试一两个文章链接,检查 Excel 输出是否符合预期
-
再执行打包指令:
pyinstaller --onefile --windowed --icon=weixin.icns main.py
如果你需要我同时帮你生成完整的 .zip 工程包(含图标、README 等),也可以告诉我,我可以按需打包给你。
是否还需要:
-
图标文件 weixin.icns?
-
示例文章链接一批(测试用)?
-
批量抓取 .txt 文件导入功能?
✅ 项目结构已成功打包!
你可以通过下面的链接下载完整的 .zip 项目包(包含主程序、依赖、README 等):
解压后,直接运行 main.py 即可使用图形界面爬虫工具。需要安装依赖,可运行:
pip install -r requirements.txt
如果你还需要添加图标(.icns 文件),或将来希望打包 .dmg,我也可以继续帮你生成。需要请随时说!
太好了!你想把你的微信公众号爬虫工具打包成 macOS 上的 .dmg 安装盘,这是发布桌面应用的标准方式。我会一步一步告诉你怎么从 .py 脚本 → .app → .dmg:
🧱 一、整体流程结构
main.py (Tk GUI)
│
▼
PyInstaller 打包 → .app 可执行文件
│
▼
create-dmg 打包 → .dmg 安装盘(带图标、背景、自定义窗口)
✅ 二、准备工作(建议工具)
工具 | 用途 | 安装方式 |
---|---|---|
Python 3 | 运行程序 | 内置 macOS |
pip | 安装依赖包 | python3 -m ensurepip --upgrade |
PyInstaller | 打包 .app 文件 | pip install pyinstaller |
create-dmg | 生成 .dmg 文件 | brew install create-dmg |
🛠️ 三、打包步骤
第一步:用 PyInstaller 生成
.app
在你的项目目录下运行:
pyinstaller --onefile --windowed --icon=weixin.icns main.py
生成目录为:
dist/
└── main ← 可执行文件(或 main.app)
如果你想打出 .app 文件夹而非单个二进制,可使用 --onedir 方式。
第二步:使用
create-dmg
制作
.dmg
确保你已经安装好 create-dmg:
brew install create-dmg
然后运行以下命令:
create-dmg \
--volname "微信爬虫工具" \
--window-pos 200 120 \
--window-size 500 300 \
--icon-size 100 \
--icon "main" 125 150 \
--app-drop-link 375 150 \
"微信爬虫工具.dmg" \
dist/
参数说明:
-
volname:挂载卷名(在 Finder 显示)
-
--icon:图标在窗口中的位置
-
--app-drop-link:右侧的“Applications”快捷方式
-
dist/:你的 .app 所在目录(目标)
-
微信爬虫工具.dmg:输出文件名
📂 第三步:.dmg 文件结构效果(用户打开后)
+-------------------------------+
| 微信爬虫工具 → /Applications |
+-------------------------------+
用户可直接将 App 拖到 Applications 文件夹。
🎨 四、可选增强项(推荐)
增强项 | 方法 |
---|---|
设置窗口背景图 | --background "背景图.jpg" |
自定义图标 | .icns 格式的图标 + --icon 指定 |
添加许可证、说明文件 | 手动拷贝到 dist/ 中 |
修改 main.app 名称 | 可在打包前重命名为正式名称 |
✅ 示例命令总览(推荐拷贝使用)
# Step 1: 打包为 .app
pyinstaller --windowed --icon=weixin.icns main.py
# Step 2: 创建 .dmg 安装盘
create-dmg \
--volname "微信公众号爬虫工具" \
--window-pos 200 120 \
--window-size 520 320 \
--icon-size 100 \
--icon "main" 120 150 \
--app-drop-link 380 150 \
--background "dmg_background.jpg" \
"微信爬虫工具.dmg" \
dist/
📦 打包完成后你可以做:
-
把 .dmg 发送给其他人使用;
-
上传到网站、企业网盘、内网分享;
-
支持自动挂载安装(和微信、腾讯文档等 App 安装体验一样)。
🧾 如果你需要:
-
.dmg 背景图设计模板
-
.icns 图标自动生成脚本(PNG → ICNS)
-
自动打包脚本(打包 + 创建 dmg 一键完成)
我可以直接帮你生成文件或打包命令模板。
你想让我先做哪一个?(图标生成脚本、背景图模板、自动打包 .sh 脚本)