用AI和爬虫自动整理豆瓣高分电影榜单:程序员的“摸鱼”新姿势

197 阅读5分钟

用AI和爬虫自动整理豆瓣高分电影榜单:程序员的“摸鱼”新姿势

“你以为我在刷豆瓣,其实我在写爬虫。”——一个不想手动整理电影清单的程序员

前言

大家好,我是你们的爬虫小能手。今天要带大家体验一把“用AI爬虫自动整理豆瓣高分电影”的快乐。你以为爬虫只能傻傻地抓数据?不,今天我们要让AI来帮我们“看懂”页面,自动提取高分电影信息,妈妈再也不用担心我手抄电影清单啦!

在这个数据为王的时代,谁还愿意手动Ctrl+C、Ctrl+V搬砖?我们要用最前沿的技术,最优雅的姿势,做最酷的事。今天的主角是Node.js爬虫库x-crawl和OpenAI大模型,二者强强联手,带你体验“让AI帮你爬网页”的快乐。

技术选型

  • x-crawl:一个现代化的Node.js爬虫库,API优雅,支持重试、间隔等常用功能,写起来比我追剧还顺手。
  • OpenAI:让AI帮你解析HTML,提取结构化数据,省去正则和DOM操作的痛苦。
  • dotenv:环境变量管理神器,API Key安全又优雅。

为什么选这三位?很简单,x-crawl让你专注于“我要什么”,不用关心“怎么拿”;OpenAI让你用自然语言描述需求,AI自动帮你提取数据;dotenv则是安全小卫士,API Key再也不会裸奔在代码里。

代码赏析

1. 环境变量,安全第一

import dotenv from 'dotenv'
dotenv.config()

API Key这种“传家宝”,当然不能写死在代码里。用dotenv一把梭,安全又优雅。只要在项目根目录下建个.env文件,把OPENAI_API_KEY=你的密钥写进去,代码里就能愉快地process.env.OPENAI_API_KEY了。

2. 创建爬虫,自动重试不怕崩

const crawlApp = createCrawl({
  maxRetry: 3,
  intervalTime: {min: 1000, max: 3000},
})

爬虫嘛,最怕被ban。设置最大重试次数和间隔时间,爬得稳,爬得久,爬得香。你可以理解为“爬虫也要讲究劳逸结合,不能一口气爬到天亮”。

3. AI加持,HTML秒变结构化数据

const crawlOpenAI = createCrawlOpenAI({
  clientOptions: {
    apikey: process.env.OPENAI_API_KEY,
  },
  defaultModel: 'gpt-4.1',
})

让AI帮你“看网页”,再也不用手写一堆cheerioquerySelector。只要一句话,AI就能帮你把HTML变成你想要的JSON。正则党、DOM党、XPath党,统统可以下班了!

4. 爬取豆瓣电影榜单

crawlApp.crawlPage('https://movie.douban.com/chart').then(async(res) => {
  const { page, browser } = res.data
  const targetSelector = '.article'
  await page.waitForSelector(targetSelector)
  const highlyHTML = await page.$eval(targetSelector, (el) => el.innerHTML)
  // ...
})

用爬虫打开页面,定位到我们关心的.article区域,拿到HTML。接下来就是见证AI魔法的时刻!

5. 让AI帮你“看懂”页面

const result = await crawlOpenAI.parseElements(
  highlyHTML,
  `获取电影评分,将评分不小于 8.0 的电影的图片链接,电影名称,电影评分获取到。输格式为:
  [
    {
      img: '图片链接',
      name: '电影名称',
      score: '电影评分'
    }
  ]
  `
)

你没看错,只要一句“自然语言”指令,AI就能帮你把高分电影的图片、名字、评分都提取出来。再也不用为写一堆选择器、正则头秃了!

6. 关掉浏览器,输出结果

browser.close()
console.log(result)

爬完记得关浏览器,环保从我做起。最后输出结果,电影清单到手!

技术细节深挖

x-crawl的优势

x-crawl的API设计非常现代化,支持Promise和async/await,写起来非常顺滑。它内置了重试机制、请求间隔、并发控制等功能,让你不用再为“被ban”而焦虑。更重要的是,它支持插件机制,可以灵活扩展,适合各种复杂场景。

OpenAI大模型的魔力

传统爬虫提取数据,往往需要写一堆选择器、正则表达式,页面一变就全军覆没。而用OpenAI大模型,只需要用自然语言描述需求,AI就能自动理解HTML结构,提取你想要的数据。比如“获取评分大于8.0的电影的图片、名称、评分”,AI就能自动帮你搞定,哪怕页面结构有小变化也能自适应。

dotenv的安全实践

API Key、数据库密码等敏感信息,绝不能写死在代码里。dotenv让你把这些信息放在.env文件里,代码里通过process.env读取,既安全又方便。记得把.env加到.gitignore,别一不小心把密钥推到GitHub上了。

实战体验

整个流程下来,你会发现,写爬虫变得前所未有的简单和优雅。你只需要关心“我想要什么”,剩下的都交给x-crawl和OpenAI。哪怕你是爬虫小白,也能轻松上手。

更重要的是,这种方式极大提升了代码的可维护性和适应性。页面结构变了?没关系,改一句自然语言指令就行。再也不用为调试正则、选择器而头秃。

拓展思考

有了这个基础,你可以很容易地拓展到其他场景,比如:

  • 爬取豆瓣图书、音乐榜单
  • 爬取知乎热榜、微博热搜
  • 甚至可以用AI帮你自动写摘要、生成报告

只要你能描述需求,AI就能帮你实现。未来的爬虫开发,或许就是“用自然语言写需求,AI自动生成代码”。

总结

本项目用现代爬虫库 + AI大模型,极大简化了网页数据提取的流程。你只需要关心“想要什么”,剩下的交给AI和爬虫搞定。以后再也不用为写一堆选择器、正则头秃了!

如果你也想体验“让AI帮你爬网页”的快乐,赶紧试试吧!代码已贴好,API Key记得用dotenv管理,安全第一。


最后,祝大家都能用AI和爬虫,轻松玩转数据世界,顺便多看几部高分好电影!如果你觉得有用,记得点赞、收藏、关注我,更多AI+爬虫实战等你来撩!