从编程到AIGC:探索人工智能生成的崛起
前言:
编程是指编写计算机程序的过程,它从最早的机器语言和汇编语言发展到高级编程语言如C、C++、Java、Python等,而现如今人工智能正逐渐可以代替普通编程化,人工智能是模拟人类智能的机器系统,它能够学习、推理、识别图像、语音识别等,深度学习模型如卷积神经网络(CNN)和循环神经网络(RNN)等为图像处理、自然语言处理等任务带来了突破性的进展, 最近几年,人工智能和图形计算开始相互融合,形成了AIGC的概念, AIGC利用图形计算的并行计算能力加速人工智能算法的训练和推理,推动了人工智能在各个领域的应用。
正文
这里等下演示从Node 爬虫来实现信息的获取
在这之前需要干什么?或者说需要哪些操作?直接罗列出来:
- 编程
- 有一个要解决的问题?
- 扎实的408 基础 计算机网络
- 分布细化任务,伪代码,编写代码
- 选择语言,编译器(二进制),CPU(运行)
- 函数超过10行,模块化划分为几个子函数,有利于代码可读性和调试
这是在编程领域中,我们要明白问题是什么以及解决问题的前提和操作该如何进行。其实代码的编写也无非是细化代码执行的过程和结果。
这是传统意义上的编写,而我需要更正的是让位给AIGC来执行
- 让位给AIGC
- 基于LLM 大模型
- 哪些传统编程可以被LLM取代 prompt 编程
- 给LLM 下指示
让我们在LLM大模型下来进行创建,根据prompt模式汇编,通俗讲,无非就是详细的给LLM下一些指令,你发话它干活。
实现一个爬虫功能:
- 爬虫 Craw1
- 它有我拿 浏览器只是上网的代理proxy 先发送一个HTTP请求 url movie.douban.com/chart 响应 html 字符串
- 解析html字符串,如果可以像css选择器一样,拿到了电影列表
- 最后将所有的电影对象组成数组,以json数组的方式返回, Done
let request = require('request-promise') // 需要安装
let cheerio = require('cheerio') // 需要安装
let fs = require('fs')
const util = require('util')
request-promise
:用于异步发起 HTTP 请求的模块。cheerio
:用于在服务器端解析 HTML 的快速、灵活和精简的 jQuery 实现。fs
:Node.js 内置模块,用于与文件系统进行交互。util
:Node.js 内置模块,提供实用工具函数。
let movies = []
let basicUrl = 'https://movie.douban.com/top250'
movies
:一个空数组,用于存储电影信息。basicUrl
:豆瓣电影 Top250 列表的基本 URL。
let once = function (cb) {
let active = false
if (!active) {
cb()
active = true
}
}
function log(item) {
once(() => {
console.log(item)
})
}
once
:确保回调函数仅执行一次的函数。log
:用于记录消息的函数,确保消息只记录一次。
function getMovieInfo(node) {
let $ = cheerio.load(node)
let titles = $('.info .hd span')
titles = ([]).map.call(titles, t => {
return $(t).text()
})
let bd = $('.info .bd')
let info = bd.find('p').text()
let score = bd.find('.star .rating_num').text()
return { titles, info, score }
}
getMovieInfo
:使用 Cheerio 从 HTML 节点中提取电影标题、信息和评分的函数。
async function getPage(url, num) {
let html = await request({
url
})
console.log('连接成功!', `正在爬取第${num + 1}页数据`)
let $ = cheerio.load(html)
let movieNodes = $('#content .article .grid_view').find('.item')
let movieList = ([]).map.call(movieNodes, node => {
return getMovieInfo(node)
})
return movieList
}
getPage
:使用request-promise
异步获取给定 URL 的数据,使用 Cheerio 提取 HTML 中的电影节点,并调用getMovieInfo
获取电影信息。
async function main() {
let count = 25
let list = []
for (let i = 0; i < count; i++) {
let url = basicUrl + `?start=${25 * i}`
list.push(... await getPage(url, i))
}
console.log(list.length)
fs.writeFile('./output.json', JSON.stringify(list), 'utf-8', () => {
console.log('生成json文件成功!')
})
}
main()
main
:获取豆瓣电影 Top250 列表的多个页面数据,将其存储在一个数组中,然后将数据写入名为output.json
的 JSON 文件。
依据各个功能的实现来执行操作。
- node 爬虫 后端功能
- npm init -y 初始化为后端项目 package.json 项目描述文件
- npm i 安装第三方包
- require
- main.js 入口文件 安排流程
直接读取数据即可。
附上完整代码给大家:
let request = require('request-promise') // 需要安装
let cheerio = require('cheerio') // 需要安装
let fs = require('fs')
const util = require('util')
let movies = []
let basicUrl = 'https://movie.douban.com/top250'
let once = function (cb) {
let active = false
if (!active) {
cb()
active = true
}
}
function log(item) {
once(() => {
console.log(item)
})
}
function getMovieInfo(node) {
let $ = cheerio.load(node)
let titles = $('.info .hd span')
titles = ([]).map.call(titles, t => {
return $(t).text()
})
let bd = $('.info .bd')
let info = bd.find('p').text()
let score = bd.find('.star .rating_num').text()
return { titles, info, score }
}
async function getPage(url, num) {
let html = await request({
url
})
console.log('连接成功!', `正在爬取第${num + 1}页数据`)
let $ = cheerio.load(html)
let movieNodes = $('#content .article .grid_view').find('.item')
let movieList = ([]).map.call(movieNodes, node => {
return getMovieInfo(node)
})
return movieList
}
async function main() {
let count = 25
let list = []
for (let i = 0; i < count; i++) {
let url = basicUrl + `?start=${25 * i}`
list.push(... await getPage(url, i))
}
console.log(list.length)
fs.writeFile('./output.json', JSON.stringify(list), 'utf-8', () => {
console.log('生成json文件成功!')
})
}
main()
实例操作
根据页面中的一个标签内容来获取信息:
选中 item
中的所有选项,如 <tr class="item"> <td width="100" valign="top">
在这个网站中查看 电影
输入对应的要求以及所表示的标签:
</tr>这是电影HTML,获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber),请使用括号的单词作为属性名,以JSON格式返回
看看效果:
json
{
"name": "对你的想象",
"picture": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.webp",
"info": "2024-03-16(西南偏南电影节) / 2024-05-02(美国网络) / 安妮·海瑟薇 / 尼古拉斯·加利齐纳 / 艾拉·鲁宾 / 安妮·玛莫罗 / 瑞德·斯科特 / 帕芮·马费尔德 / 乔丹·亚伦·霍尔 / 玛蒂尔达·吉安诺普洛斯 / Meg Millidge / 奇克·曼诺哈 / Ray Cham / Jaiden...",
"score": "5.9",
"commentsNumber": "19123人"
}
所以信息提取成功!
总结:
后端爬虫基于大模型LLM,使用人工智能来进行普通的代码去除是不是更便捷呢
转载自:https://juejin.cn/post/7368294440546713638