自动爬取微信公众号文章并整理成 Excel 表格”的工具

你想要“自动爬取微信公众号文章并整理成 Excel 表格”的工具,可以分成以下几个步骤实现:


🧩 一、功能目标拆解

  1. 输入公众号名称或ID

  2. 自动抓取该公众号的历史文章列表

  3. 提取文章信息(如标题、发布时间、链接、阅读数、点赞数等)

  4. 保存为 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 或者生成完整模板,你希望我:

  1. 帮你打个 GitHub 项目结构压缩包?

  2. 或把以上内容生成本地目录结构让你直接用?

你可以直接说“生成项目文件压缩包”或“再给我主程序最新版”。

好的,以下是最新版的 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),手动选择保存路径

错误处理

无法访问或解析失败会记录为“抓取失败”


✅ 接下来你可以:

  1. 把该代码保存为 main.py

  2. 安装依赖:pip install requests beautifulsoup4 pandas openpyxl

  3. 运行:python main.py

  4. 测试一两个文章链接,检查 Excel 输出是否符合预期

  5. 再执行打包指令:

pyinstaller --onefile --windowed --icon=weixin.icns main.py


如果你需要我同时帮你生成完整的 .zip 工程包(含图标、README 等),也可以告诉我,我可以按需打包给你。

是否还需要:

  • 图标文件 weixin.icns?

  • 示例文章链接一批(测试用)?

  • 批量抓取 .txt 文件导入功能?

✅ 项目结构已成功打包!

你可以通过下面的链接下载完整的 .zip 项目包(包含主程序、依赖、README 等):

👉 点击下载 weixin_spider_gui.zip

解压后,直接运行 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 脚本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值