新时代JS的爬虫与大模型结合,会产生什么样火花?

171 阅读3分钟

传统编程与AIGC

在当今互联网时代,数据抓取与分析技术为获取有价值的信息提供了强大的支撑,而人工智能技术的融入更是为这一过程增添了智能化的色彩。下面,我们将通过一个具体案例——抓取并解析豆瓣电影排行榜的数据,来探讨这一技术实践的流程和意义。

技术准备:工具与环境搭建

首先,我们使用了几个关键的JavaScript库和技术栈来实现这个任务:request-promise用于发送HTTP请求获取网页HTML,cheerio帮助解析HTML文档,fs处理文件操作,以及OpenAI API(通过openai库)来尝试利用AI处理自然语言理解和生成任务。这样的技术组合,让我们能够高效地从网页上抓取并处理数据。

数据抓取:直击豆瓣电影排行榜

我们的目标是豆瓣电影排行榜,一个汇聚了最新电影信息与用户评价的热门平台。通过指定URL https://movie.douban.com/chart,利用request-promise发送请求,我们成功获取到了网页的HTML源码,并将其保存至本地文件,确保数据的持久化存储。

async function main() {
    // await LLM
    // 代码分步细化 
    const URL = "https://movie.douban.com/chart"
    const html = await request_promise({
        url:URL,
    })
    fs.writeFile('./douban.html',html,'utf-8',(err)=>{
        if(err){
            console.log(err.message)
            return
        }
        console.log("success")
    })
    
    // const html = await fs.readFileSync('./douban.html','utf-8')
    // 将html字符串加载到内存中
    const $ = cheerio.load(html)
    const movie = $('#content .article .item')
    let movieList = []
    for(let i=0;i<movie.length;i++){
        movieList.push(getMovieInfo(movie[i]))
    }
    // console.log(movie.length)
    console.log(movieList)

    // aiHandler(html)
}

数据解析:细致入微的电影信息挖掘

接下来,借助cheerio库,我们加载了之前下载的HTML文件,开始对其中的电影信息进行解析。每部电影作为一个.item元素存在于页面的特定区域中,通过遍历这些元素,调用getMovieInfo函数逐个提取电影的标题、图片URL、简介和评分等关键信息,构建出清晰的电影信息对象。这一步骤展现了数据清洗与结构化的重要性,使得后续处理更为便捷。


function getMovieInfo(movie) {
    const $$ = cheerio.load(movie);
    return {
        title: $$('.pl2 a').text(),
        pic: $$('.nbg img').attr('src'),
        info: $$('p.pl').text().trim(),
        rating_nums: $$('.rating_nums').text()
    };
}

AI介入:智能辅助生成JSON数组

为了进一步探索AI在数据处理中的应用,我们设计了aiHandler函数,尝试通过OpenAI的GPT-3.5-Turbo模型,直接对原始HTML进行解析指令,旨在自动生成包含每部电影详情的JSON数组。尽管此环节在当前示例中未展示实际输出,但构想背后的理念是将AI作为增强工具,减少手动编写解析逻辑的复杂性,特别是面对复杂多变的网页结构时。

async function aiHandler(html){
    const chatCompletion =await clinet.chat.completions.create({
        model:'gpt-3.5-turbo',
        messages:[
            {
                role:'user',
                content:html+'解析这段html提取每部电影的标题,图片url,评分,简介,并生成一个JSON数组。'
            }
        ]
    })
    
    console.log(chatCompletion.choices)
}

总结

整个过程不仅是一次技术实践,更是一次对数据价值挖掘与智能化应用的探索。从网页抓取到数据解析,再到尝试引入AI自动处理,我们看到了现代技术如何协同工作,提高信息处理的效率与灵活性。未来,随着技术的不断进步,我们期待看到更多创新方式让数据获取与分析更加智能化,为各行业提供深度洞察与决策支持。

值得注意的是,在实际操作中,对于外部API如OpenAI的调用,需确保遵循其使用政策与API的正确配置,包括但不限于API Key的有效性及模型的选择与参数设置。此外,对于公开网站的数据抓取也应遵守robots.txt协议,尊重版权与用户协议,合法合规地进行数据收集与分析。