我用AI coding助手写了2小时,省下了一整天:一个真实脚本开发全记录
一、痛点:手动复制CSDN代码块,我快崩溃了
作为一名技术博主,我经常需要把别人的CSDN文章中的代码块提取出来测试。但CSDN网页上的代码块要么带行号,要么需要逐段复制,50个代码块能折腾一下午。
于是我决定:用AI coding助手(这里以通义灵码 VS Code插件为例)写一个自动提取脚本。原本预估要写一天,结果2小时搞定——全程几乎没自己敲代码,全是AI生成+微调。
这篇文章记录真实过程,包括提示词、代码、踩坑和效率对比。无论你用Copilot、Cursor还是通义灵码,思路通用。
二、需求拆解(我给AI的原始提示词)
我先新建一个文件 extract_csdn_code.py,然后对AI说(使用注释形式):
# 请写一个Python脚本,实现以下功能:
# 1. 输入一个CSDN文章URL(例如 https://blog.csdn.net/xxx/article/details/123456)
# 2. 自动请求该页面,解析HTML
# 3. 提取所有的<pre><code>... </code></pre> 内的代码内容
# 4. 去除行号(CSDN有时会在代码内显示行号,如 '<span class="linenum">1</span>')
# 5. 将每个代码块保存为单独的文件,文件名根据文章标题和代码块序号自动生成(如 article_title_block_1.py)
# 6. 自动检测代码语言(通过class属性,如 language-python),并设置正确的文件扩展名
# 7. 使用requests和BeautifulSoup,并处理可能的反爬(User-Agent)
AI在几秒内生成了第一版代码。下面展示经过我手动调整后的最终版本(AI生成的原始版本有3个小bug,后面会讲)。
三、最终可用代码
import requests
from bs4 import BeautifulSoup
import re
import os
from urllib.parse import urlparse
def extract_csdn_code(url):
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'
}
resp = requests.get(url, headers=headers)
resp.encoding = 'utf-8'
soup = BeautifulSoup(resp.text, 'html.parser')
# 获取文章标题作为目录名
title_elem = soup.find('h1', class_='title-article')
if not title_elem:
title_elem = soup.find('h1')
title = title_elem.get_text().strip().replace('/', '_')[:50]
os.makedirs(title, exist_ok=True)
# 查找所有代码块
code_blocks = soup.find_all('pre')
if not code_blocks:
code_blocks = soup.find_all('code')
lang_map = {
'python': '.py',
'java': '.java',
'javascript': '.js',
'html': '.html',
'css': '.css',
'bash': '.sh',
'json': '.json'
}
for idx, block in enumerate(code_blocks, 1):
# 提取原始文本
code_text = block.get_text()
# 去除行号(简单正则,匹配行号+空格或点)
code_text = re.sub(r'^\s*\d+\.?\s*', '', code_text, flags=re.MULTILINE)
# 检测语言
code_class = block.get('class', [])
lang = None
for c in code_class:
if c.startswith('language-'):
lang = c.split('-')[1]
break
ext = lang_map.get(lang, '.txt')
filename = f"{title}/block_{idx}{ext}"
with open(filename, 'w', encoding='utf-8') as f:
f.write(code_text.strip())
print(f"Saved: {filename}")
print(f"Done! Extracted {idx} code blocks to folder: {title}")
if __name__ == '__main__':
url = input("请输入CSDN文章URL: ")
extract_csdn_code(url)
四、踩坑记录(AI的三宗罪)
AI生成的初版跑了就报错,我总结了3个典型坑:
坑1:选择器不兼容
AI只写了 soup.find_all('pre code'),但很多CSDN文章直接是 <pre><code> 或只有 <pre>。修复:同时查找 pre 和 code。
坑2:行号去除逻辑太粗暴
AI用 replace('1.', '') 这种硬编码,实际行号从1到N。改用正则 re.sub(r'^\s*\d+\.?\s*', '', code_text, flags=re.MULTILINE) 一次性解决。
坑3:编码与反爬
AI没加 resp.encoding = 'utf-8',导致中文乱码。也没加User-Agent,会触发CSDN 403。补上后正常。
经验:AI写的代码像“高级草稿”,必须人工审查逻辑边界和异常处理。
五、效率对比
| 方式 | 时间 | 代码质量 | 学习价值 |
|---|---|---|---|
| 纯手写 | 6-8小时 | 稳定 | 高 |
| AI辅助(本案例) | 2小时(含调试) | 需微调 | 中(主要学调试) |
| 复制粘贴现成脚本 | 10分钟 | 不可控 | 低 |
对我而言,AI最擅长生成80%的重复性框架,剩下20%的边界条件、反爬、特殊逻辑还得靠自己。
六、给技术人的建议
- 不要直接信任AI的代码:必须跑起来,用典型输入测试。
- 提示词越具体,结果越靠谱:像“去除行号”这种细节必须写进去。
- AI + 注释 = 文档自动生成:让AI为每个函数写docstring,比你手动写快10倍。
- CSDN文章抓取注意:频率过快会被封,建议加
time.sleep(1)。
现在,你也可以试试用AI coding助手写一个自己的小工具。从“手动点鼠标”到“AI生成脚本”,省下的时间用来喝杯咖啡不香吗?
欢迎在评论区分享你的AI coding实战经历。
更多推荐



所有评论(0)