传统编程与AIGC的融合:以豆瓣电影爬虫为例
在信息技术日新月异的今天,编程不仅是一种技术手段,更是创新与效率的代名词。传统编程以其严谨的逻辑结构和规范化的开发流程,支撑着无数互联网应用的运行。然而,随着人工智能技术的迅速发展,特别是生成式AI的兴起,编程领域正经历一场革命性的变革。本文将以爬虫技术爬取豆瓣电影排行榜为例,探讨传统编程与AI生成内容(AIGC)的融合之道,展现两者如何协同作业,提升开发效率与质量。
传统编程的基石:架构与标准化
传统编程的核心在于其清晰的架构设计与标准化的操作流程。对于大型项目而言,如互联网大厂中数以万计的程序员共同协作的系统,这些原则尤为重要。架构设计确保了系统的可扩展性与维护性,而标准化则保证了代码风格的一致性,使得团队合作更加高效。在这样的背景下,编程不仅是解决业务需求的手段,也是技术艺术的展现。
需求驱动开发:一切始于需求。无论是前端还是后端项目,明确的需求分析是项目启动的第一步。以爬虫项目为例,需求可能是爬取豆瓣电影的详细信息,包括排名、评分、简介等,用于数据分析或是个性化推荐系统。
技术栈的选择:在后端开发领域,Node.js凭借其异步非阻塞I/O模型和JavaScript的广泛普及,成为众多项目首选的技术栈。Node.js环境允许开发者在服务器端使用JavaScript,实现从前端到后端的无缝衔接。
基础配置与依赖管理:在Node.js项目中,npm
(Node Package Manager)是不可或缺的包管理工具。通过npm i request-promise cheerio
等命令,开发者可以轻松安装诸如request-promise
用于发起HTTP请求,以及cheerio
用于解析HTML文档的库,这些工具大大简化了网络爬虫的开发流程。
传统编程代码展示
const request = require('request-promise');
const cheerio = require('cheerio');
// 入口文件
// 异步的
// 将douban 网页的电影列表html,爬取,
// 返回JSON数组, 每一电影项包含name, desc, score...
// 单点入口
async function main() {
// 代码 分步细化,程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析, 拿到电影内容
// 返回内容
// await LLM
// 良好的编程规范
const URL = "https://movie.douban.com/chart";
// http 请求 html 408 基于请求
// 攻击
const html = await request({
url: URL
})
console.log(html);
// 代码的可读性,可能要比功能更重要
// html分析 document + 选择器 cheerio 满足
// 编程素养 将html字符串加载到内存中,$ =Document
let $ = cheerio.load(html);
// console.log($('.article table').length);
// 严谨
const movieNodes = $('#content .article .item');
const movieList = [];
for (let i = 0; i < movieNodes.length; i++) {
// 封装?
// 将一段电影的html解析,剥离出去,
// 这段功能相对独立 复用的
// main 比较复杂了, 一个函数超过10行代码, 一定可以再分函数
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(pic)
// console.log(title);
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();
AI生成内容(AIGC)的介入
尽管传统编程提供了坚实的基础,但面对海量数据处理和复杂逻辑时,人工编码的效率和精确度面临挑战。这时,AI生成内容技术便展现出其独特价值。
在爬虫项目中,数据解析是关键一环,也是最容易被AI优化的部分。例如,原本需要手动编写代码来解析HTML文档,找出目标数据的位置,这一过程既繁琐又容易出错。利用AI技术,特别是自然语言处理(NLP)和机器学习模型,可以自动化识别和提取网页中的关键信息,减少1/3甚至更多的流程性代码编写工作量。
AI辅助的自动化流程:想象一下,只需输入一个指令,如“这是一段电影列表html,请获取电影名(name), 封面链接(picture), 简介(info),评分(score),评论人数(commentsNumber), 请使用括号的单词作为属性名,以JSON数组的格式返回。”,AI系统就能自动生成相应的爬虫脚本,自动完成网页请求、数据提取、清洗及存储等一系列任务。这不仅大幅提高了工作效率,也让开发者能将更多精力投入到更高层次的逻辑设计和业务创新中。
实践案例:融合之路
以豆瓣电影排行榜爬虫为例,我们可以在以下几个步骤中融入AI技术:
-
需求分析与AI辅助设计:首先明确爬取需求,利用AI工具(如自然语言处理模型)帮助生成爬虫设计的初步框架,包括确定爬取路径、数据提取规则等。
-
智能爬取策略:AI可以根据历史数据和实时网络状况动态调整请求频率和策略,避免被封IP,提高爬取效率。
-
数据提取自动化:利用AI模型自动识别和提取页面元素,如电影标题、评分等,取代传统的手动编写XPath或CSS选择器。
-
后处理与分析:AI不仅可以帮助清洗数据,还能进行初步分析,比如情感分析电影评论,预测受欢迎程度,为后续决策提供支持。
AIGC融合后代码
const request = require('request-promise');
const cheerio = require('cheerio');
// AIGC LLM 生成式内容
// tr 字符串要生成movie json对象
// input prompt
const OpenAI = require('openai');
const client=new OpenAI({
apiKey: '****',
baseURL:'https://api.chatanywhere.tech/v1'
})
// 入口文件
// 需求:将 豆瓣网页列表html 爬取
// 返回JSON数组,每一项电影信息包含name,desc,score...属性
// 异步
// 单点入口
async function main() {
// 代码 分布细化 程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 解析html 拿到电影的内容
// 封装 返回电影对象内容
// await LLM 模块加载完成
// 良好的代码规范,
const URL = 'https://movie.douban.com/chart';
// 发送一个 http请求 408 等待拿到html字符串 JS再执行下面的代码
const html = await request({
url: URL,
})
// console.log(html);
// 代码可读性 可能要比功能更重要
// html 分析 DOM树 document对象+选择器 满足
// 编程素养 将html字符串加载到内存中,$ = document
let $ = cheerio.load(html);
// console.log($('.article table').length);
// 严谨
const movieNodes = $('#content .article .item');
let movie_html = ''
for (let i = 0; i < 2; i++) {
movie_html += cheerio.load(movieNodes[i]).html();
}
let prompt = `
${movie_html}
这是一个电影列表的html片段,需要获取需要的电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber)。请使用括号的单词作为属性名,以JSON对象数组的格式返回。
`
const chatCompletion = await client.chat.completions.create({
model: 'gpt-3.5-turbo', // 适合聊天的模型 很多种
messages: [
{
role: 'user',
content: prompt
}
]
})
console.log(chatCompletion.choices);
}
main();
结语
传统编程与AI生成内容的融合,不仅优化了编程流程,提升了开发效率,还为技术栈的拓展开辟了新的路径。在爬虫开发这一经典场景中,AI技术的应用展示了其在自动化、智能化方面的巨大潜力。随着技术的不断演进,未来开发者将更多地扮演“指导者”而非“编码工”的角色,聚焦于创意与策略,让AI成为实现高效编程的得力助手。这种融合趋势,无疑将推动编程领域迈向一个更加高效、智能的新纪元。
转载自:https://juejin.cn/post/7370993837302988838