在编程的世界里,传统编程如同一位经验丰富的工匠,以其严谨的逻辑、精准的控制力,塑造着数字世界的每一个角落。而人工智能生成内容(AIGC)的加入,则为这门技艺注入了新的活力,开启了软件开发的新纪元。本文将深入探讨两者如何在经典与创新之间架起桥梁,特别是在后端项目,如基于Node.js的豆瓣电影爬虫开发中,展现它们的融合魅力。
经典传统编程:稳固基石与标准化流程
传统编程是软件开发的基石,其优势在于对系统架构的精妙设计与逻辑控制的精确实施。在大型企业中,数以万计的程序员遵循着标准化的开发流程,利用诸如Git的版本控制系统协同作业,确保每一行代码的质量与可维护性。这一过程不仅依赖于工程师们对语言、框架的深刻理解,也得益于诸如单元测试、持续集成等最佳实践的执行。以Node.js为例,作为JavaScript的后端运行环境,它借助npm(Node Package Manager)构建了一个庞大的生态系统,使得开发者能够轻松管理依赖、初始化项目(npm init -y
)、安装必要包(如使用npm i request-promise cheerio
来准备爬虫项目的网络请求与HTML解析工具)。
js
const request = require('request-promise'); //异步请求库
const cheerio = require('cheerio');
经典传统编程的优势
- 架构设计与逻辑控制:传统编程让开发者能够精确控制程序的每一个细节,包括系统架构设计、业务逻辑实现等,这对于构建复杂系统至关重要。
- 标准化与流程化:它遵循明确的编程规范和最佳实践,便于团队协作和后期维护。通过模块化和分层设计,使得代码易于管理和扩展。
- 性能优化与定制化:对于性能敏感的应用,传统编程允许手动优化以达到最佳性能。同时,高度定制化的解决方案能更好地满足特定需求。
经典编程示例-----豆瓣网页爬取
js
sync function main() {
// 代码 分步细化,程序员思维
// 伪代码
// 1. 根据url 发送一个http请求 拿到html
// 2. 根据html 分析, 拿到电影内容
// 3. 返回内容
const URL = 'https://movie.douban.com/chart';
// http 请求 返回html 408 基于请求 await 等待返回结果
const html = await request({
url: URL,
});
// htnl分析 document + 选择器 cheerio 满足
// 编程素养 将HTML字符串加载到内存中,$ = Document
let $ = cheerio.load(html);
const movieNodes = $('#content .article .item');
const movieList = [];
for(let i=0;i<movieNodes.length;i++){
// 封装?
// 将一段电影的html解析,剥离出去,
// 这段功能相对独立 复用的
// main 比较复杂了,一个函数超过十行代码,一定可以再分函数
movieList.push(getMovieInfo(movieNodes[i]));
}
console.log(movieList);
}
const getMovieInfo = function (node) {
let movieInfo = {};
// 将tr加载进内存
let $$ = cheerio.load(node);
let title = $$('.pl2 a').text();
let pic = $$('.nbg img').attr('src'); // 获取图片地址
// console.log(title); // 输出 电影名称
// console.log(pic); // 输出 电影图片
let info = $$('p.pl').text();
let rating_nums = $$('.rating_nums').text();
movieInfo.title = title; // 电影名称
movieInfo.pic = pic; // 电影图片
movieInfo.info = info; // 电影信息
movieInfo.rating_nums = rating_nums; // 电影评分
return movieInfo;
}
main();
AIGC:智能化助力,提升开发效率
AI生成内容技术的引入,为传统编程模式带来了革新。它不仅减轻了程序员的负担,还提升了开发效率,特别是在那些重复性高、模式化的任务上。以爬虫项目为例,AIGC能够自动分析目标网站的结构,智能生成HTML解析逻辑(如Cheerio的选择器规则),替代了原本需要人工编写的繁琐代码。这意味着开发者可以将更多精力投入到核心业务逻辑的创新与优化上,而非被基础的流程性代码所束缚。
爬虫项目中的融合实践
在构建一个针对豆瓣电影的爬虫项目时,AIGC的融合价值尤为明显。首先,在项目初始化阶段,虽然仍需手动执行npm init -y
来创建项目结构,但随后的环境配置、基础包的安装与初始化代码生成等,理论上可通过AI辅助工具实现自动化。例如,AI可以根据项目需求分析,推荐并自动安装最合适的请求库(如request-promise
)和DOM操作库(如cheerio
),甚至初步生成爬虫框架代码。
在爬取逻辑层面,以往开发者需手动编写代码来解析网页HTML,寻找电影标题、评分等关键信息的标签路径。如今,AIGC可以分析网页样本,学习页面布局与数据结构,自动生成解析逻辑,极大简化了这一过程。同时,对于爬虫频繁遇到的反爬机制,AI还可以通过模式识别与策略学习,自动调整请求频率、更换User-Agent等,以提高爬虫的稳定性和成功率。
AI生成内容(AIGC)的融入点
-
自动化代码生成:AI可以根据特定需求自动生成基础代码框架,如模型类、CRUD操作等,减少重复工作,提升开发效率。
- 例如:AI可以根据API设计文档自动生成前后端接口代码。
-
智能辅助编程:AI可以提供代码补全、错误检测、性能建议等功能,帮助开发者更快更准确地编写代码。
-
数据分析与处理:在处理大量数据时,AI可以辅助进行数据清洗、模式识别、预测分析等,特别是在机器学习和数据科学领域。
-
文档生成与更新:基于代码注释和结构,AI能自动生成或更新项目文档,保持其与代码同步。
爬虫示例中的融合
在爬虫项目中,AIGC的融合可以体现为:
-
动态解析逻辑:以往需要手动编写代码根据网页结构解析HTML,而现在AI可以学习网页模式,自动生成解析逻辑(如使用Cheerio时的选择器规则)。
-
请求策略优化:AI可以分析网站反爬策略,自动调整请求头、延迟时间等,提高爬虫的成功率和效率。
-
传统与AI的融合示例
异步请求服务器 并对其进行解析
js
const request = require('request-promise'); //异步请求库
const cheerio = require('cheerio');
// AIGC LLM 生成式内容
// tr 字符串要生成movie JSON对象
// input prompt
const OpenAI = require('openai');
获取openAI的API 让其能够运行
js
const client = new OpenAI({
// 凭证 密钥 算力收费 token
apiKey : 'sk-4EALZWXkk4Qdv18mRi2R7uY5f4i3vA05IYGhiTVVURIG7nZo',
baseURL: 'https://api.chatanywhere.tech/v1'
})
创建入口函数
js
async function main() {
// 代码 分步细化,程序员思维
// 伪代码
// 1. 根据url 发送一个http请求 拿到html
// 2. 根据html 分析, 拿到电影内容
// 3. 返回内容
// await LLM
// 良好的编程规范
const URL = 'https://movie.douban.com/chart';
// http 请求 返回html 408 基于请求 await 等待返回结果
const html = await request({
url: URL,
});
let $ = cheerio.load(html);
// console.log($('.articl table').length);
// 严谨
const movieNodes = $('#content .article .item');
let movie_html = '';
for(let i=0;i<movieNodes.length;i++){
movie_html += cheerio.load(movieNodes[i]).html();
}
//**使用prompt对openAI进行提问**
let prompt=`这是一段电影列表,请获取电影名(name),封面链接(picture),简介(info),评分(rating_nums),评论人数(commentsNumber),
请使用括号里的单词作为属性名,以JSON格式返回。`;
const chatCompletion = await client.chat.completions.create({
model: 'gpt-3.5-turbo', //适合聊天的模型 很多种
messages: [{
role: 'user',
content: prompt
}]
})
结合点总结
- 流程性代码减少:如HTML解析、模板代码生成等重复性高、模式明确的任务,可由AI接手。
- 工作效率提升:解放开发者,让他们专注于解决更复杂的业务逻辑和创新,而非基础代码编写。
- 技术栈适应性:无论是前端还是后端项目,AI都能通过提供工具、库或者直接集成到开发环境中,提升整个开发流程的智能化水平。