Python学习笔记:从虚拟环境到调试的完整成长路径
每次有人问我“Python学到什么程度算入门”我的回答从来都是去翻你自己的Python学习笔记。如果笔记里全是复制粘贴的代码说明还在抄作业阶段如果里面有报错记录、踩坑复盘、以及你自己写下的注释那才算真正开始会了。这篇笔记是我从零基础写到能独立完成数据清洗、网页抓取和小工具的整个过程里回过头来重新整理的一份心得。它既不是语法手册也不是教程搬运而是把那些“当时没人详细告诉我的事”按主题归档适合正在啃语法书、准备做第一个练手项目、以及想建立自己知识库的朋友参考。写代码这件事最不缺的就是教程缺的是有人告诉你“哪些地方会浪费你三小时”以及“为什么这么做”。下面这些内容基本都是我实际踩过、改过、最后固定下来的做法你照着走一遍会比漫无目的地刷一百个视频有用得多。1. 从“装好Python”到“搭出能长期用的项目骨架”1.1 虚拟环境第一节课就该养成的习惯很多人装完Python就急着敲代码第一行print(hello)跑通之后就开始pip install各种库全装进全局环境。头一个月不会出事等你同时做三四个项目一个要requests 2.x另一个依赖requests 1.x或者一个项目装的新版库把另一个项目的脚本搞崩你才明白什么叫“环境混乱”。我从那之后每个项目起步第一件事就是建虚拟环境。虚拟环境的原理不复杂它相当于给每个项目配了一间独立的小屋子屋子里有一份自己的Python解释器和自己的依赖库项目之间互不干扰。创建和使用的命令就那么几条但值得刻进肌肉记忆# 进入项目目录后执行 python -m venv .venv # 激活环境 source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows # 之后安装的库都会进这个环境 pip install requests # 把当前环境依赖导出成清单文件 pip freeze requirements.txt.venv是我固定使用的目录名因为它以点开头在绝大部分文件管理器里默认隐藏不会污染项目目录列表。之后的requirements.txt是整个环境的地基别人拿到你的项目只需要pip install -r requirements.txt就能复现同样的依赖组合。这里有个容易忽略的细节pip freeze会把所有传递依赖也列出来版本号也是完全锁死的这固然保险但如果你想给别人一个宽松一点的安装体验可以只写顶层依赖再配合pip-tools这类工具生成锁定版本。简单项目直接freeze就好别在这个环节过度设计。1.2 一个顺手到不值得争论的目录结构初学者最容易写的是把所有代码堆在一个main.py里跑通了再说。我一开始也是这样后来代码到了两千行找一个函数得翻半天调试的时候上下跳转整个人都是崩溃的。后来我固定下来一套最小可行的目录结构既不显得笨重又能让项目长到一定规模时依旧清爽project_name/ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── config.py │ └── utils.py ├── tests/ │ └── test_utils.py ├── data/ ├── docs/ ├── requirements.txt └── README.mdapp放业务代码tests放测试data放数据文件docs放笔记和设计文档。没必要为了结构而结构一个三五天的脚本任务拆成main.py加utils.py就够了但至少要养成“入口、配置、工具函数分成三个文件”的意识。这样做最大的好处是入口文件只剩流程控制读起来像目录工具函数写好了可以跨项目复用配置文件改动时不需要牵动业务逻辑。对一个Python学习者来说这个习惯比你学会任何一个第三方库都值钱。1.3 环境问题里最常翻车的三个细节环境相关的坑我归纳成三个反复出现的场景每一个我都至少帮同事排查过两回。第一python和python3是不同的命令。在macOS和Linux上有些系统里python可能指向Python 2或者压根不存在。写脚本、写自动化任务时最好在文件里明确写#!/usr/bin/env python3并始终使用python3 -m venv这类命令避免“明明按教程敲的为什么报错”的尴尬。第二虚拟环境激活之后终端提示符前面会多出(.venv)之类的标识但很多人没注意到。如果激活后pip list看到的还是全局包大概率是当前终端根本没进入这个环境。我习惯用which pythonWindows用where python确认解释器路径路径里包含.venv才说明环境真的生效。第三依赖清单不能手写。手写requirements.txt容易漏版本号更常见的是写完才发现某个库没安装完整。我只用pip freeze生成或者按顶层依赖手动维护一小份清单再用pip install -r去验证能否一次性装通。装通之后删掉虚拟环境、重建一次全套流程能走通这份清单才算合格。2. 语法不是背出来的几个真正改变写法的转折点2.1 数据结构的“描述式”写法推导式与解包我学Python的第一个转折点是意识到它很多语法是“描述你要什么”而不是“一步一步怎么算”。最典型的就是列表推导式。早期我写“把列表里的数字翻倍”老老实实写四行for循环后来换成了nums [1, 2, 3, 4] doubled [n * 2 for n in nums]一行描述完含义反而更清楚。推导式不只是短它逼着你把关注的焦点从“循环过程”挪到“变换结果”上。字典推导式同理处理配置映射、字段重命名时极其好用raw {name: alice, age: 18} normalized {k.upper(): v for k, v in raw.items()}与推导式同等重要的是解包。交换两个变量不用中间变量a, b b, a取列表开头几个元素加剩余部分first, *rest items遍历字典的键值对for k, v in config.items()。我见过不少写了好几年Python的人还在用[0]、[1]下标去取元素可读性差不说结构一改就得跟着改。解包的本质是让代码直接匹配数据结构的外形这是Python里性价比最高的语法投资。2.2 函数的参数传法踩过可变默认值的坑才算入门函数参数这块最阴险的坑是可变默认参数。看下面这个例子def add_item(item, cache[]): cache.append(item) return cache print(add_item(a)) # [a] print(add_item(b)) # [a, b]第二次调用时cache竟然还带着上次的a。原因是默认参数在函数定义时只被求值一次[]这个列表对象被后续所有调用共享了。我当年排查这个问题一度以为是缓存逻辑被神秘力量干扰其实只是默认值的机制。正确写法是默认值用None函数内部再初始化def add_item(item, cacheNone): if cache is None: cache [] cache.append(item) return cache除了这个坑*args和**kwargs也值得系统练一遍。前者把不定数量的位置参数收成元组后者把不定数量的关键字参数收成字典在写装饰器、封装接口时几乎天天用。还有一个小众但实用的语法用*作为分隔符强制要求某些参数必须以关键字形式传入比如def draw(shape, *, scale1.0)这样调用时写draw(circle, scale2.0)清晰而draw(circle, 2.0)会直接报错。参数设计清晰了函数调用处就自然变成文档。2.3 类与dataclass面向对象的边界感初学者很容易走两个极端一种是听说了面向对象就到处写类两三行逻辑也要套一层class另一种是永远用字典和函数打天下导致数据结构和操作逻辑散落各处。我现在的判断标准很简单当一组数据总是被同一组函数操作或者需要保证某种内部状态一致时才值得用类。只存数据不写行为的话优先考虑dataclass。dataclass是写数据载体时的神器。给它一个装饰器它会帮你生成__init__、__repr__这些样板代码from dataclasses import dataclass dataclass class Point: x: float y: float def distance(self, other: Point) - float: return ((self.x - other.x) ** 2 (self.y - other.y) ** 2) ** 0.5比起手写构造函数这种写法减掉了大量重复劳动也让类型标注自然成了代码文档。我用它写过配置项、表格行、爬虫结果对象体验都很稳。真正需要自定义初始化逻辑或实现复杂行为时再回到普通的class写完整实现也不迟。关键是别有“必须用类”的心理负担Python是一门务实语言哪种写法让代码更容易读懂和修改就选哪种。2.4 迭代与生成器面对“数据很大”时的本能反应另一个让我“开窍”的概念是生成器。刚学的时候不理解yield和return的区别只觉得多了一个关键字很烦。直到有一天要处理一个几千万行的日志文件如果一次性全部readlines()内存直接告急。换成迭代式读取和处理代码跑得又稳又省内存def read_log_lines(path): with open(path, encodingutf-8) as f: for line in f: yield line.strip() for line in read_log_lines(huge.log): if ERROR in line: handle_error(line)关键区别在于普通函数return返回结果就结束生成器函数则是每yield一次吐出一个值随时可以接着往下跑所以它不需要把所有结果都存在内存里。生成器表达式的写法也值得顺手练sum(len(line) for line in lines)就不需要先构建一个完整列表再求和。判断“该不该用生成器”的标准也很直白数据量大到存不下或者你只需要逐个消费数据时就用它否则普通列表反而更直观。3. 标准库和第三方库的取舍我现在的选型顺序3.1 先把手边的标准库用熟很多人一上来就装三方库标准库反而很陌生。实际上Python标准库已经覆盖了大部分日常需求用得快、维护成本低、换环境也不怕装不上。我按使用频率挑几个说说。collections里的Counter和defaultdict一个负责计数一个负责“字典取值不存在时自动给默认值”。统计词频、分组归类两行搞定from collections import Counter, defaultdict words [apple, banana, apple] print(Counter(words)) # Counter({apple: 2, banana: 1}) grouped defaultdict(list) grouped[fruit].append(apple) # 不存在时自动创建空列表pathlib的Path对象是把文件和目录操作从字符串拼接里解放出来的关键。Path(data) / raw / input.csv比os.path.join(data, raw, input.csv)优雅太多而且跨平台不用考虑分隔符问题。itertools则是一堆迭代工具的集合我在需要合并列表、做排列组合、按条件分组时全靠它常用的chain、groupby、islice掌握了就能少吃很多苦头。functools里的lru_cache写递归或者重复计算场景时加一行装饰器就能做缓存省下的思考时间很可观。re做正则、json做序列化、datetime做时间处理这些都是早晚绕不开的基础设施早用熟早受益。3.2 第三方库的三条筛选标准标准库之外第三方库是Python生态的杀手锏。我在项目里经常用到的比如发HTTP请求的requests、处理表格数据的pandas、解析网页的beautifulsoup4、处理中文分词的jieba每一个都极大缩短了开发周期。但第三方库也不是越多越好我筛选一个库是否进项目只看三条。第一条维护是否活跃。看PyPI页面上的最近发布日期一年以上没更新、仓库里issue长期没人回的库尽量避开除非它已经足够稳定且你愿意自己维护。第二条文档和示例是否完整。一个库好不好用看完它的“Quickstart”心里基本就有数文档稀烂的库就算功能很强等你踩坑时连排查依据都没有。第三条社区反馈是否够多。去搜索引擎或代码平台搜一下这个库的名字看看讨论量和踩坑贴的数量一个没人讨论的库意味着你遇到问题时只能自己扛。这三条筛选下来基本能筛掉九成“看起来很酷但没人管”的库。另外还要注意版本兼容装库之前看它是否支持你当前的Python版本以及它依赖的底层库会不会和现有环境冲突。安装之后立刻跑一遍官方示例确认和项目里其他部分能和平共处再继续往下写。3.3 装库之前先问自己三个问题我见过太多人把“装了很多库”等同于“能力强”结果项目里塞了十几个依赖其中一半只用了一两次。装库之前我建议先自问三句这个问题标准库能不能解决这个库的核心功能我到底需要几个这个库的引入会不会带来额外的环境负担标准库能解决的优先标准库。比如只是读一个简单的CSVcsv模块就够了不必为了一小份数据把pandas拖进来。如果确实需要某个库也要克制“顺便把另一个也装上”的冲动。每多一个依赖就多一层版本冲突的可能也多一分安全风险。依赖不是勋章是你必须长期维护的契约。保持依赖精简的习惯会让你的项目在半年后回来维护时依旧能快速跑起来而不是花一下午时间解决环境冲突。4. 调试能力才是真正的分水岭4.1 先学会读堆栈而不是急着复制报错去搜索初学阶段我一看到报错就慌第一反应是把整段红色文字复制去搜索结果大部分时间都在无效翻找。后来花时间搞懂堆栈的结构排查效率立刻不一样。一段典型的报错长这样Traceback (most recent call last): File app/main.py, line 42, in module result process(data) File app/utils.py, line 18, in process return [normalize(item) for item in data] File app/utils.py, line 12, in normalize value int(item[score]) TypeError: int() argument must be a string or a number, not NoneType读堆栈的正确姿势是从下往上。最下面一行是异常类型和具体信息明确告诉你int()收到了一个None再往上是异常发生的位置也就是utils.py第12行继续往上是一层一层的外层调用还原出从main.py的调用一路走到这里来的路径。大多数时候不需要看完整堆栈只要盯住“最底下那个异常发生点”和“离它最近的那一层函数”问题就定位了一半。我还有一个习惯在阅读堆栈时把报错的异常类型单独记下来TypeError、ValueError、KeyError、AttributeError这些常见类型各自对应的原因都不同。KeyError多半是字典里没有那个键AttributeError多半是变量类型和你想的又不一样。把这些类型含义积累进笔记再遇到同类报错就能秒定位。4.2 用logging和pdb替代“print大法”调试时到处print是每个人的第一反应我到现在偶尔也这么干但后遗症也很明显调试完忘了删或者删了之后下次又需要来回折腾。稍微正式一点的方案是logging它能把日志分级还能输出到文件import logging logging.basicConfig( levellogging.DEBUG, format%(asctime)s %(levelname)s %(message)s, ) logging.info(开始处理数据共 %d 条, len(data))调试信息用DEBUG级别正常运行用INFO真正出错用ERROR。这样生产环境里可以关掉DEBUG日志只保留关键信息而不是看着满屏print发愁。当你需要真正“停下来看看现场”时就轮到pdb登场了。在代码里插入一行breakpoint()运行到那里程序会暂停进入交互式调试器你可以用p打印变量、n执行下一行、c继续运行、l查看当前位置的代码。这套工具组合起来比十万个print都强。4.3 一次真实的排错列表里的“同一个值”之谜分享一个我记忆犹新的排查过程。当时我在做一个模拟项目X需要初始化一个二维矩阵于是写了matrix [[0] * 3] * 3乍一看[[0, 0, 0], [0, 0, 0], [0, 0, 0]]没问题。但当我执行matrix[0][1] 5之后神奇的事情发生了print(matrix) # [[0, 5, 0], [0, 5, 0], [0, 5, 0]]三行全被改了。当时我的第一反应是数据类型有问题但怎么看都是整数。后来在调试器里打印每一行列表的id()才发现matrix的三个元素指向的是同一个列表对象* 3做的是重复引用而不是复制。立刻想起这个机制正确写法是用列表推导式重新生成matrix [[0] * 3 for _ in range(3)]这次三行是不同的列表对象修改任意一个元素都不会影响其他行。这个坑的根子在于“可变对象在Python里的引用语义”它解释了一大类“改了AB也变了”的诡异问题。类似地复制列表时要用copy()或切片而不是直接赋值复制包含嵌套对象的复杂结构时要用copy.deepcopy()。搞清楚这些调试很多“看似玄学”的BUG都会豁然开朗。5. 最终沉淀怎样把Python学习笔记变成随身工具5.1 笔记分三层价值最高的那层别偷懒学习笔记这个东西很多人记着记着就变成了“代码抄写本”。我自己探索下来发现有效笔记应该分三个层次。第一层是速查型笔记比如某段API怎么用、某种写法是什么这类笔记是给未来的自己准备的字典记的时候干净清晰就行。第二层是问题复盘记录这个坑怎么踩的、报错长什么样、排查思路是什么、最终怎么解决这一层价值最高因为语法忘了可以查而运行时踩出来的经验很难搜到。第三层是项目日志每做完一个小项目把当初的目标、做出来的结果、卡住的地方、留下的遗憾写下来这是自己成长的标尺。很多人的笔记全部停留在第一层遇到新问题照样抓瞎。我后来刻意要求自己每踩一个坑必须补一条第二层的复盘。坚持了三个月后再回看发现自己之前反复在同一类问题上浪费时间记复盘笔记这件事从根本上改掉了那种低效循环。5.2 复盘模板一张表记下完整排查链路为了不把复盘写成流水账我固定用一张表来组织内容。每次遇到值得记录的报错或BUG就在笔记里开一个条目按这几个字段填充字段说明举例现象表面上出了什么问题修改二维矩阵一行三行都变现场运行环境、触发条件Python 3.10Windows二维列表初始化排查过程我尝试了什么、观察到了什么打印列表内容正常打印每行id发现指向同一对象根因底层机制是什么* 3只复制引用未创建新列表对象修复最终怎么改的改用列表推导式逐行创建以后注意这类问题的通用预防方案可变对象复制优先想到copy/deepcopy填完这张表一条笔记的记录成本大概十分钟但它给未来的帮助是巨大的。以后哪怕忘了具体场景只要搜到关键词“二维矩阵”“引用”就能把整条排查链路捞出来相当于每一笔学费都换成了长期资产。5.3 让未来的自己用得上记笔记的方式我用过本地Markdown文件、代码托管仓库、带搜索的笔记工具最终都验证了一遍其实工具本身不重要重要的只有三点方便记、方便搜、方便改。方便记意味着不能在几百字的零散想法上花时间去排版方便搜意味着必须有稳定的关键词体系我自己的习惯是每种异常类型、每个库名、每个项目代号都作为固定标签方便改意味着笔记不是用来“收着”的而是经常回读、经常增补的。我还养成一个习惯每次写代码之前先翻一翻之前的相关笔记每次调完一个Bug顺手补一条每次做完一个项目更新对应的项目日志。几个月下来这本Python学习笔记已经成了我个人的外接大脑。学编程不是比谁存的知识多而是比谁能在需要时更快地找到答案。对我来说认真的笔记恰恰是最快的答案索引。最后再分享一个小技巧笔记里的代码一定得是能跑的。我吃过记了“半截代码”的亏过了两个月想用发现缺一个import又无从考证当时是怎么想的。所以现在每段代码块我都会保证它是完整可复现的必要时连运行环境都写上。这个习惯看着不起眼但长期下来你的笔记才真正配得上“工具”两个字。

相关新闻

迭代学习控制开源代码:让重复作业系统一次比一次精准

迭代学习控制开源代码:让重复作业系统一次比一次精准

简介:迭代学习控制(ILC)是一类面向重复性任务的控制策略,核心思想是通过多次迭代修正控制输入,逐步逼近期望输出,在机器人、自动化生产线、航空航天等领域均有广泛应用。这份开源代码以单个MATLAB的m文件呈…

2026/10/16 7:58:16 阅读更多 →
nvidia-smi命令找不到?从驱动到容器彻底排查与修复指南

nvidia-smi命令找不到?从驱动到容器彻底排查与修复指南

“nvidia-smi: command not found”大概是 Linux 装显卡驱动时最经典、也最让人摸不着头脑的报错。我第一次遇到是在一台刚装完系统的服务器上,当时还以为是显卡坏了,折腾半天才发现只是驱动没装上。后来搞多了就明白,这个报错本身不复杂&…

2026/10/16 7:57:16 阅读更多 →
大模型上下文管理实战:Token预算、记忆分层与检索召回

大模型上下文管理实战:Token预算、记忆分层与检索召回

前几天我和一朋友调试他做的对话机器人,本来前期测试一切正常,结果聊到第 20 轮的时候,模型突然开始答非所问。他问了一句“我刚才不是说过了吗”,系统毫无反应。我打开日志看了一眼 Token 消耗,心里大概就有数了&…

2026/10/16 7:57:15 阅读更多 →

最新新闻

51单片机波形发生器:查表法、DAC0808与Proteus仿真方案

51单片机波形发生器:查表法、DAC0808与Proteus仿真方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 8:35:36 阅读更多 →
RAG技术详解:从原理到最小实现,避开常见坑

RAG技术详解:从原理到最小实现,避开常见坑

RAG这几年在LLM圈子里火得发烫,几乎每场技术讨论都绕不开它。但要真问一句"RAG到底是什么、上手做一版要几步、哪些环节最容易翻车",能讲透的人其实不多。很多人把它当成一个名词贴在文档里,产品评审时说"我们要用RAG解决幻觉…

2026/10/16 8:35:36 阅读更多 →
现场总线技术解析:主流协议、工程难点与智能设备演进

现场总线技术解析:主流协议、工程难点与智能设备演进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 8:35:36 阅读更多 →
信息资源管理导论备考攻略:核心框架、高频考点与答题策略

信息资源管理导论备考攻略:核心框架、高频考点与答题策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 8:35:36 阅读更多 →
Python实现WM多模式匹配算法:从原理到优化实战

Python实现WM多模式匹配算法:从原理到优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 8:35:36 阅读更多 →
Zephyr速通指南:从零搭建开发环境到点亮开发板

Zephyr速通指南:从零搭建开发环境到点亮开发板

1. 为什么折腾三天没跑通的官方流程,我决定换个姿势如果你点进这篇笔记,大概率是和我一样的人:拿到一块开发板,看完“读文档-装工具-跑Hello World”的步骤,想着半小时总该能点灯了吧,结果卡在了莫名其妙的…

2026/10/16 8:34:34 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →