前言
网络爬虫(Web Crawler)是自动化获取网页数据的核心技术,主要依靠编写代码解析网页结构并模拟浏览器行为。随着人工智能技术的发展,尤其是大型语言模型(LLM)的兴起,为爬虫技术带来了新的范式。与传统的硬编码模式不同,结合 AI 大模型与提示词工程(Prompt Engineering),可以显著提高开发效率,实现更智能的数据解析和提取。
前置知识
在深入讲解之前,我们需要明确爬虫的基本流程。以爬取豆瓣电影 Top250 数据为例,目标是从 HTML 结构中定位并提取电影名称、评分、简介等信息。
传统爬虫实现
核心思路
传统编程方式通常遵循以下步骤:
- 发起请求:使用 HTTP 库(如 Python 的
requests或 JavaScript 的axios)向目标 URL 发送请求。 - 接收响应:获取服务器返回的 HTML 内容(字符串或字节流)。
- 解析 HTML:利用解析器(如 BeautifulSoup, Cheerio, lxml)构建 DOM 树。
- 选择元素:通过 CSS 选择器或 XPath 定位包含数据的节点。
- 提取数据:从节点中获取文本、属性值等。
- 数据处理:清洗脏数据、格式化、去重。
- 存储数据:写入文件、数据库或 API。
- 循环处理:处理分页或列表页。
代码示例(JavaScript)
以下是一个基于 Node.js 环境爬取豆瓣电影 Top250 的完整示例,使用了 request-promise 和 cheerio。
// 引入所需模块
const request = require('request-promise');
const cheerio = require('cheerio');
const fs = require('fs').promises;
// 存储电影信息的数组
let movies = [];
// 豆瓣电影 Top250 的基础 URL
const basicUrl = 'https://movie.douban.com/top250';
// 解析电影信息的函数
function getMovieInfo(node) {
const $ = cheerio.load(node);
// 选择标题元素
const titles = $('.info .hd span').( $(el).()).();
bd = $();
info = bd.().().();
score = bd.().().();
{ : titles[] || , info, score };
}
() {
{
html = ({ url });
.();
$ = cheerio.(html);
movieNodes = $();
movieList = [];
movieNodes.( {
movieList.((node));
});
movieList;
} (error) {
.(, error.);
[];
}
}
() {
count = ;
list = [];
( i = ; i < count; i++) {
url = ;
pageData = (url, i);
list.(...pageData);
( (resolve, ));
}
.();
fs.(, .(list, , ), );
.();
}
().(.);


