用python将https://www.csdn.net/网页上的内容都爬取下来保存到word中

### 实现思路 使用 Python 爬虫抓取 CSDN 首页内容并将其保存到 Word 文档中,可以通过 `requests` 或 `selenium` 抓取网页内容,再结合 `python-docx` 库将数据写入 Word 文档。此方法可以实现网页内容的结构化提取和文档生成,适用于内容归档、资料整理等场景。 ### 爬取 CSDN 页面内容 CSDN 是一个技术博客平台,页面内容通常包含文章标题、链接和摘要信息。使用 `requests` 和 `BeautifulSoup` 可以抓取首页的文章标题和链接信息。需要注意的是,部分网页内容可能通过 JavaScript 动态加载,此时需要使用 `selenium` 或 `playwright` 模拟浏览器操作。 ```python import requests from bs4 import BeautifulSoup def fetch_csdn_links(url="https://www.csdn.net/"): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') articles = [] # 根据 CSDN 的页面结构提取文章链接和标题(可能需要根据实际页面结构调整) for item in soup.find_all('a', {'class': 'title-article'}): title = item.get_text(strip=True) link = item['href'] articles.append((title, link)) return articles ``` ### 将数据保存到 Word 文档 使用 `python-docx` 库创建 Word 文档,并将爬取到的标题和链接插入到文档中,每行显示一个标题和对应的链接,格式清晰易读。 ```python from docx import Document from docx.shared import Pt from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_PARAGRAPH def save_to_word(data, filename="CSDN_Articles.docx"): doc = Document() doc.add_heading("CSDN 热门文章", level=1) for title, link in data: paragraph = doc.add_paragraph() run = paragraph.add_run(f"标题:{title}") run.font.size = Pt(12) run.bold = True paragraph = doc.add_paragraph() run = paragraph.add_run(f"链接:{link}") run.font.size = Pt(10) run.italic = True doc.add_paragraph() # 添加空行分隔 desktop_path = os.path.join(os.path.expanduser("~"), "Desktop") file_path = os.path.join(desktop_path, filename) doc.save(file_path) return file_path ``` ### 完整脚本整合 将上述两个函数整合为完整的脚本,抓取 CSDN 首页文章链接,并保存到 Word 文档中。 ```python import os import requests from bs4 import BeautifulSoup from docx import Document from docx.shared import Pt def fetch_csdn_links(url="https://www.csdn.net/"): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') articles = [] for item in soup.find_all('a', {'class': 'title-article'}): title = item.get_text(strip=True) link = item['href'] articles.append((title, link)) return articles def save_to_word(data, filename="CSDN_Articles.docx"): doc = Document() doc.add_heading("CSDN 热门文章", level=1) for title, link in data: paragraph = doc.add_paragraph() run = paragraph.add_run(f"标题:{title}") run.font.size = Pt(12) run.bold = True paragraph = doc.add_paragraph() run = paragraph.add_run(f"链接:{link}") run.font.size = Pt(10) run.italic = True doc.add_paragraph() desktop_path = os.path.join(os.path.expanduser("~"), "Desktop") file_path = os.path.join(desktop_path, filename) doc.save(file_path) return file_path if __name__ == "__main__": csdn_data = fetch_csdn_links() if csdn_data: file_path = save_to_word(csdn_data) print(f"文档已保存到:{file_path}") else: print("未抓取到任何文章") ``` ### 注意事项 - **页面结构变化**:CSDN 的页面结构可能会发生变化,因此需要根据实际 HTML 结构调整选择器。 - **反爬机制**:CSDN 可能会设置反爬机制,如 IP 封禁或验证码,可使用代理 IP 池和请求间隔控制来规避风险[^1]。 - **动态加载内容**:如果页面内容由 JavaScript 动态加载,可以使用 `selenium` 或 `playwright` 替代 `requests` 进行模拟浏览器操作。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

利用python3爬虫爬取全国天气数据并保存入Mysql数据库

利用python3爬虫爬取全国天气数据并保存入Mysql数据库

利用python3爬虫爬取全国天气数据并保存入Mysql数据库 具体可见博客 https://blog.csdn.net/u013523775/article/details/79313803

用Python爬取豆瓣电影分类排行榜(保存至本地)

用Python爬取豆瓣电影分类排行榜(保存至本地)

用 Python 爬取豆瓣电影分类排行榜并保存到本地excel文件 作者博客:https://blog.csdn.net/weixin_52132159 文章链接:https://blog.csdn.net/weixin_52132159/article/details/119505289

python爬取京东手机销售数据

python爬取京东手机销售数据

爬取京东手机销售与评价数据,以excel表格形式存储,以条形图形式展示不同品牌手机在淘宝的评价人数。可以通过更改关键字手机实现对其他商品的爬取。详细介绍https://blog.csdn.net/weixin_42911616/article/details/81506154

Python爬虫之Scrapy(爬取csdn博客)

Python爬虫之Scrapy(爬取csdn博客)

本博客介绍使用Scrapy爬取博客数据(标题,时间,链接,内容简介)。首先简要介绍Scrapy使用,scrapy安装自行百度安装。 创建爬虫项目 安装好scrapy之后,首先新建项目文件:scrapy startproject csdnSpider 创建项目之后会在相应的文件夹位置创建文件: 创建爬虫模块 首先编写爬虫模块,爬虫模块的代码都放置于spiders文件夹中 。 爬虫模块是用于从单个网站或者多个网站爬取数据的类,其应该包含初始 页面的URL, 以及跟进网页链接、分析页 面内容和提取数据函数。 创建一个Spider类,需要继承scrapy.Spider类,并且定义以下三个属性: 1

python+selenium+google网页自动截全图保存

python+selenium+google网页自动截全图保存

python+selenium+google网页自动截全图保存 可以自动登陆,自动点击下一页 使用说明: https://blog.csdn.net/tanghong1996/article/details/112188107

用Python爬取豆瓣电影分类排行榜(不保存)

用Python爬取豆瓣电影分类排行榜(不保存)

用 Python 爬取豆瓣电影分类排行榜 作者博客:https://blog.csdn.net/weixin_52132159 文章链接:https://blog.csdn.net/weixin_52132159/article/details/119505289

python爬取淘宝手机销售数据

python爬取淘宝手机销售数据

爬取淘宝手机月销售数据,以excel表格形式存储,以条形图形式展示不同品牌手机在淘宝的月销售量。可以通过更改关键字手机实现对其他商品的爬取。详细介绍https://blog.csdn.net/weixin_42911616/article/details/81506154

实战自学python如何成为大佬(目录):https://blog.csdn.net/weixin-67859959/artic

实战自学python如何成为大佬(目录):https://blog.csdn.net/weixin-67859959/artic

实战自学python如何成为大佬(目录):https://blog.csdn.net/weixin-67859959/artic

Python使用Phantomjs截屏网页的方法

Python使用Phantomjs截屏网页的方法

今天小编就为大家分享一篇Python使用Phantomjs截屏网页的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python+selenium爬取手机号归属地

python+selenium爬取手机号归属地

爬取手机号归属地 效果可查阅https://blog.csdn.net/weixin_42930696/article/details/105507651

python爬虫之初入urllib(csdn)————程序.pdf

python爬虫之初入urllib(csdn)————程序.pdf

python爬虫之初入urllib(csdn)————程序

Python - 截取指定帧数间隔指定大小的视频,并保存图片到指定位置

Python - 截取指定帧数间隔指定大小的视频,并保存图片到指定位置

Python - 截取指定帧数间隔指定大小的视频,并保存图片到指定位置; 详细请查看https://blog.csdn.net/tanghong1996/article/details/88395372

基于python的行人与车辆检测和跟踪实现(HOG+SVM/HAAR)

基于python的行人与车辆检测和跟踪实现(HOG+SVM/HAAR)

博文:基于python的行人与车辆检测和跟踪实现(HOG+SVM/HAAR) 链接:https://blog.csdn.net/qq_38523834/article/details/89619697 文件里面有我提到的视频,cars.xml文件和myhaar.xml文件。需要的Python库在requirements.txt有提及: cmake==3.12.0 dlib==19.16.0 numpy==1.15.3 opencv-python==3.4.3.18 这些是最低版本,可以比这个高。我是用python3.6运行的。 没有安装dlib库的同学,注意在安装好所需库之后,需要自行下载一个.whl文件后才能用pip install dlib 安装成功哦。 相关下载链接在这个博文里:https://blog.csdn.net/wzx479/article/details/79890440

python_TB.py

python_TB.py

Python-爬取淘宝搜索结果 https://zfj1128.blog.csdn.net/article/details/93622436

百度地图与高德地图用户评论Python爬取结果.zip

百度地图与高德地图用户评论Python爬取结果.zip

爬取了360手机助手百度地图与高德地图用户评论,包括好评、中评和差评,具体方法移步:https://blog.csdn.net/qq_37089628/article/details/102567270

C/C++ 多线程调用嵌入Python

C/C++ 多线程调用嵌入Python

配合文章代码实现 c++ 多线程调用嵌入的Python 文章详情 https://blog.csdn.net/u010383605/article/details/82057084 Python下载地址: https://www.python.org/downloads/windows/

Python爬取CSDN资源[源码]

Python爬取CSDN资源[源码]

本文详细介绍了如何使用Python的urllib2库爬取CSDN下载资源的URL、名称、分数等信息。作者通过分析HTML页面结构,逐步解析资源列表页和具体资源页的内容,包括资源积分、下载次数、类型和大小等数据。文章还提供了完整的Python代码示例,展示了如何从CSDN个人资源页面提取结构化信息,并讨论了如何进一步获取评论信息的方法。该教程适合对网络爬虫感兴趣的开发者学习。

使用python3 模拟烟花绽放

推荐一下我的博客(https://blog.csdn.net/qq-37963615)

效

使用python3 模拟烟花绽放 推荐一下我的博客(https://blog.csdn.net/qq-37963615) 效

使用python3 模拟烟花绽放 推荐一下我的博客(https://blog.csdn.net/qq_37963615) 效果图:

Python 核心编程代码 https://blog.csdn.net/weixin-38566632/article/deta

Python 核心编程代码 https://blog.csdn.net/weixin-38566632/article/deta

Python 核心编程 1. 数据类型 1.1 整型 int 1.2 浮点数 float 1.3 布尔类型 bool 1.4 字符串 str 1.5 列表 list 1.6 元组 tuple 1.7 集合 set 1.8 字典 dict 2. 逻辑结构、文件操作 2.1 分支结构和三元表达 2.2 循环和遍历 2.3 目录和路径 2.4 文件操作 3. 函数、类、异常处理 3.1 函数 3.2 类 3.3 异常处理 4. 包和模块、随机数 4.1 包和模块 4.2 随机数 5. 生成器、高阶函数 生成器 高阶函数 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/weixin_38566632/article/details/140246866

爬取静态网页漫画的python爬虫项目

爬取静态网页漫画的python爬虫项目

这是用于爬取静态网页漫画的python爬虫项目,整体框架基本可用。由于爬虫的高度针对性,本项目不能直接对任意网站爬取,而是对于不同的网站需要做适当修改后才能使用。此外,如需学习本项目,欢迎查看本人的博客https://blog.csdn.net/m0_73954336/article/details/138953485?spm=1001.2014.3001.5501。

最新推荐最新推荐

recommend-type

国央企创新负责人如何构建多维度的科技资源评价与配置体系?.docx

国央企创新负责人如何构建多维度的科技资源评价与配置体系?
recommend-type

《移动通信系统》全套PPT课件2026(西安电子科技大学)

《移动通信系统》全套PPT课件2026(西安电子科技大学)
recommend-type

Python3 json序列化常见报错

json只能序列化字符串、数字、列表、字典、布尔、空值。无法序列化datetime、bytes、自定义类对象,直接dumps会抛出类型错误。解决方案:自定义序列化函数,通过default参数传入,手动转换特殊对象。中文乱码:默认ensure_ascii=True会转义中文,改为False直接输出原生中文。反序列化loads注意:json字符串要求双引号,Python字典单引号字符串无法解析,需要提前替换引号。 lxwuhua.cn mayawalkermx.com mccia.com.cn lzsxgqscgs.com mftug.com
recommend-type

产业园区运营负责人如何精准对接区域技术成果与产业需求?.docx

产业园区运营负责人如何精准对接区域技术成果与产业需求?
recommend-type

科技中介服务机构如何提升科技成果评估服务的专业性与效率?.docx

科技中介服务机构如何提升科技成果评估服务的专业性与效率?
recommend-type

Rust系统编程与WebAssembly开发:LLVM IR教程及实战资源

LLVM IR(Intermediate Representation,中间表示)是LLVM编译器基础设施的核心抽象层,它是一种强类型、静态单赋值(SSA)形式的低级程序表示,兼具可读性与机器可处理性,既接近高级语言语义,又贴近底层硬件指令模型。本资源标题“llvm-ir-tutorial-Rust系统编程与WebAssembly资源”明确指向一个跨技术栈的深度实践型学习体系,其核心逻辑在于:以Rust语言为前端开发载体,通过显式生成、阅读、修改和优化LLVM IR,深入理解现代编译器后端工作原理;同时将该能力延伸至WebAssembly(Wasm)目标平台,打通从系统级安全编程到浏览器/边缘沙箱执行的全链路编译路径。Rust之所以成为该教程的理想语言载体,在于其零成本抽象、内存安全性保障(无GC)、对底层控制的精细支持(如裸指针、内联汇编、自定义分配器),以及其默认使用LLVM作为后端编译器(rustc基于LLVM),使得开发者能无缝切入IR层面进行调试与干预——例如通过`rustc --emit=llvm-ir`直接导出人类可读的`.ll`文件,或借助`llc`工具将IR进一步降级为特定架构的汇编代码。而WebAssembly则构成该知识体系的关键出口:Wasm并非直接运行Rust源码,而是依赖Rust编译器链(通过`wasm32-unknown-unknown`或`wasm32-wasi`目标)将Rust代码先编译为LLVM IR,再由LLVM的Wasm后端(`llvmlite`或`wabt`等工具链组件)将其转换为`.wasm`二进制模块;此过程高度依赖对IR结构的理解——例如函数签名如何映射为Wasm类型签名、全局变量如何转化为Wasm线性内存偏移、panic机制如何被重写为Wasm trap指令、以及如何通过`#[no_mangle]`和`extern "C"`控制符号导出以适配JS宿主调用。教程中所含的`src/`目录必然涵盖大量Rust源码示例,包括但不限于:手动编写`unsafe`块触发特定IR模式(如`llvm.memcpy`内建调用)、使用`#[inline(never)]`阻止优化以观察原始IR结构、通过`cfg(target_arch = "wasm32")`条件编译实现平台特化逻辑;`code/`子目录则极可能存放配套的LLVM IR片段(`.ll`)、已编译的Wasm二进制(`.wasm`)、对应的JS胶水代码及HTML测试页面,形成“Rust → IR → Wasm → JS”的完整验证闭环。`book.toml`表明该项目采用mdBook构建交互式技术文档,内容结构应严格遵循认知递进:首章解析LLVM IR语法规范(基本块、指令集如`%1 = add i32 %0, 42`、常量表达式、phi节点在循环中的作用);次章演示Rust到IR的映射规则(`Vec<T>`的内存布局如何体现为`alloca + store + load`序列、`match`表达式如何展开为`switch`或`br`链);第三章聚焦Wasm后端特性(Wasm的限制性类型系统如何迫使LLVM插入`i32.trunc_sat_f64_s`等饱和截断指令、WASI系统调用如何通过`call_indirect`间接调用实现);后续章节必涉及高级主题:利用`llvm::Pass` API编写自定义优化遍(如针对Wasm体积优化的死代码消除Pass)、通过`llvmlite`在Python中动态构造IR并JIT执行、对比`-C opt-level=z`(极致尺寸优化)与`-C lto=yes`(链接时优化)对IR形态的影响。`LICENSE`与`CHANGELOG`则体现工程严肃性:MIT/Apache-2.0双许可证确保Rust生态兼容性,而持续更新的变更日志反映对LLVM版本演进(如LLVM 16+对Wasm GC提案的支持)、Rust稳定版发布(如async/await IR表示变化)、Wasm标准进展(Interface Types、Exception Handling)的实时响应。`.github/`目录内应包含CI配置(如用`cargo llvm-ir`检查PR是否引入非预期IR膨胀)、自动化Wasm测试脚本(`wasm-validate`校验二进制合法性、`wabt`反编译IR比对)、以及Issue模板引导用户精准报告IR生成异常。综上,该资源绝非孤立的语法手册,而是一个融合编译原理、系统编程范式、Web前沿标准与工业级工程实践的立体知识网络,掌握它意味着不仅能写出高效安全的Rust代码,更能洞悉代码如何穿越抽象层级最终在异构环境中精确执行——这种穿透式理解力,正是当代高性能系统开发者与WebAssembly平台架构师的核心竞争力所在。
recommend-type

告警风暴终结方案:137个原始指标→5个黄金信号(Golden Signals for ML)的权重建模方法论(附LinkedIn_Snap真实权重矩阵)

# 告警风暴的终结者:当黄金信号成为系统健康的语义罗盘 在某个凌晨三点,LinkedIn 的 SRE 工程师正盯着 Grafana 面板上跳动的 2300+ 条告警——其中 87% 被标记为“已知噪声”。这不是偶然的运维事故,而是一场持续数年的系统性失语:监控系统在疯狂说话,却没人听得懂它真正想表达什么。我们采集了 CPU 使用率、HTTP 错误率、GC 暂停时间……但这些数字本身并不携带意义,就像一堆散落的乐谱音符,没有指挥家,就没有交响乐。真正的破局点,从来不在“压低告警数量”,而在于回答一个更本质的问题:**当系统开始生病,哪个信号最先、最真实、最不可辩驳地喊出‘我疼’?** 这个问
recommend-type

在Ubuntu上用vLLM部署DeepSeek大模型,具体要怎么操作?

### 部署DeepSeek模型于Ubuntu系统的指南 #### 准备工作环境 为了确保顺利部署,需先确认操作系统为Ubuntu并安装必要的软件包和库。对于CUDA版本不匹配的情况,可以通过`conda install cuda -c nvidia`来解决依赖问题[^2]。 #### 安装Python虚拟环境 创建独立的Python运行空间有助于管理项目所需的特定版本解释器及其扩展模块: ```bash python3 -m venv deepseek-env source deepseek-env/bin/activate ``` #### 获取VLLM及相关工具 获取用于加
recommend-type

Windows平台ESP32开发环境一站式搭建包:MSYS2、ESP-IDF v3.3与VS Code集成配置

ESP32环境搭建是嵌入式物联网开发中极为关键的基础环节,尤其在Windows平台下构建一套稳定、可复现、符合官方推荐规范的开发环境,直接关系到后续固件编译、调试、OTA升级、Wi-Fi/BLE协议栈集成、低功耗优化等高级功能的实现质量与开发效率。本资源包“ESP32环境搭建包(msys2、esp-idf、VScode)”并非简单工具集合,而是一套经过历史验证、面向ESP-IDF v3.3版本深度适配的完整开发生态闭环系统,其核心构成包含三大支柱性组件:MSYS2运行时环境、ESP-IDF SDK v3.3源码及工具链、Visual Studio Code编辑器及其专用插件生态。首先,MSYS2作为Windows下最成熟可靠的类Unix环境模拟平台,提供了POSIX兼容的Shell(bash/zsh)、GNU核心工具集(make、gcc、gdb、awk、sed等)、包管理器pacman,以及对Python 2.7/3.x、CMake 3.10+、Ninja构建系统的原生支持——这些是ESP-IDF构建系统赖以运转的底层基石。特别值得注意的是,所含esp32_win32_msys2_environment_and_toolchain-20181001.zip并非通用MSYS2镜像,而是Espressif官方于2018年10月针对ESP32芯片特性(如Xtensa LX6双核架构、指令集扩展、内存映射布局)定制编译的交叉工具链(xtensa-esp32-elf-gcc),该工具链内建了对FreeRTOS内核调度器、ROM函数调用、Flash加密、Secure Boot签名验证等硬件级特性的深度支持,且与IDF v3.3的Kconfig配置系统、component.mk构建规则、idf.py命令行接口完全对齐。其次,ESP-IDF v3.3是ESP32 SDK发展史上的里程碑版本,首次全面引入组件化架构(Component-based Architecture),将Wi-Fi驱动(esp_wifi)、蓝牙协议栈(bluedroid)、电源管理(esp_pm)、ADC/DAC/PWM外设驱动、LVGL图形库、HTTP客户端/服务器、MQTT、CoAP等全部封装为可独立编译、版本可控、依赖可声明的模块单元;同时强化了CMake构建系统,摒弃旧版makefile,支持多目标构建(app/bootloader/partition table)、自定义链接脚本、符号表分析、静态断言检查,并内置了idf_monitor串口监控器、idf_size内存分析工具、idf.py menuconfig图形化配置界面等工程化利器。第三,VSCodeUserSetup-x64-1.38.1.exe虽为较早版本(2019年9月发布),但其稳定性极高,配合C/C++扩展(Microsoft)、ESP-IDF Extension(Espressif官方维护)、CMake Tools、Python、GitLens等插件后,可实现语法高亮(支持IDF专属宏如ESP_LOGI)、智能补全(基于compile_commands.json)、一键编译烧录(idf.py build/flash/monitor绑定快捷键)、GDB图形化调试(支持多线程FreeRTOS任务切换视图、寄存器/内存/堆栈实时监视)、JTAG硬件调试(需搭配ESP-Prog或FTDI转接板)、代码片段模板(如ESP_ERROR_CHECK宏快速插入)、项目结构导航(按components目录自动索引)等工业级开发体验。此外,该环境包隐含了大量易被忽视却至关重要的细节配置:例如MSYS2中需手动执行pacman -Syu更新基础系统并重启终端以避免toolchain冲突;需将~/.espressif/tools目录权限设为可写以允许idf.py自动下载Python依赖(如pyserial、kconfiglib);VSCode中必须正确设置"idf.espIdfPath"、"idf.pythonBinPath"、"idf.customExtraPaths"等JSON配置项,否则无法识别idf.py命令;还需在Windows PATH中追加MSYS2/usr/bin路径以确保git、ssh等工具全局可用;更关键的是,v3.3版本要求Python严格限定为3.6–3.8区间(不兼容3.9+),且需禁用pip缓存以防wheel包版本错乱。整个搭建过程本质上是对嵌入式开发范式的系统性实践:从操作系统抽象层(MSYS2)→硬件抽象层(ESP-IDF HAL)→应用框架层(FreeRTOS+组件)→开发工具链(VSCode+插件),形成一条贯穿软硬件协同设计的知识脉络。掌握此环境不仅意味着能跑通blink例程,更代表着已具备阅读ESP-IDF源码(如esp-idf/components/esp_wifi/下的phy_init.c、wifi_init.c)、定制SDK配置(通过menuconfig启用BT Coex、修改heap内存分配策略)、交叉调试汇编级问题(如cache attribute错误导致的data abort)、甚至向主干分支提交patch的能力——这才是“行业完整源码”标签背后所承载的真实技术纵深与工程素养。
recommend-type

数据管道中断时模型仍在“自信预测”?Freshness-Aware熔断服务设计(含自动降级策略+数据新鲜度SLI定义白皮书)

# 数据新鲜度:当“最新”不再可靠,AI系统如何守住语义底线? 在某个电商大促的零点,推荐引擎仍在高速运转——Kafka Lag稳定在47ms,Flink Checkpoint每30秒成功一次,P99延迟维持在218ms,监控大盘上所有SLI指标绿得发亮。但就在这一片“健康”的表象之下,模型正持续将用户刚刚点击的“新款iPhone 16 Pro”误判为“翻新机”,将实时搜索词“婴儿奶粉”匹配到三个月前的促销页面,将高价值用户的下单意图降权至长尾商品池……次日复盘发现:上游埋点SDK因时区配置错误,将`event_time`写成了客户端本地时间(比服务端快3小时);特征管道虽“准时抵达”,却早