前言
爬虫主要依靠编写代码实现对网页结构的解析,通过模拟浏览器行为获取目标数据。随着人工智能技术的发展,LLM 大模型的出现为爬虫技术带来了新的思路。与传统的编程模式不同,使用 AI 大模型结合 Prompt 可以显著提高程序员的编程效率。通过结合人工智能和自然语言处理技术,开发者可以更加高效地编写爬虫代码,并实现对网页内容的智能解析和提取。
前置内容
本文以爬取豆瓣电影 Top250 数据为例进行讲解。
HTML 结构示意: [图片:HTML 结构示意]
传统爬虫
思路
传统编程爬取一个网页并获取数据的步骤如下:
- 发起请求:使用适当的库或模块(如 axios, request, http 等)向目标网站发起 HTTP 请求,获取网页的 HTML 内容。
- 接收响应:接收到网页的 HTML 内容,通常是作为字符串或字节流的形式。
- 解析 HTML:使用适当的 HTML 解析器(如 cheerio, jsdom, htmlparser2 等)对获取的 HTML 内容进行解析,形成可操作的 DOM 树或类似的数据结构。
- 选择元素:通过 DOM 操作方法或选择器语法选择出包含目标数据的 HTML 元素。
- 提取数据:从选中的 HTML 元素中提取所需的数据,如文本、属性值等。
- 处理数据:对提取的数据进行必要的处理,如清洗、筛选、转换格式等。
- 存储数据:将处理后的数据存储到合适的数据结构中,如数组、对象、数据库等。
- 循环处理:根据需要,可能需要循环执行上述步骤以处理多个页面或多个数据源。
- 结果输出:将最终结果输出到合适的位置,如文件、数据库、API 等。
代码实现 (JavaScript)
// 引入所需模块
let request = require('request-promise') // 用于发起 HTTP 请求
let cheerio = require('cheerio') // 用于解析 HTML
let fs = require('fs') // 用于文件操作
const util = require('util')
// 存储电影信息的数组
let movies = []
// 豆瓣电影 Top250 的基础 URL
let basicUrl = 'https://movie.douban.com/top250'
// 用于确保回调函数只执行一次的函数
let once = function (cb) {
active =
(!active) {
()
active =
}
}
() {
( {
.(item)
})
}
() {
$ = cheerio.(node)
titles = $()
titles = ([])..(titles, {
$(t).()
})
bd = $()
info = bd.().()
score = bd.().()
{ titles, info, score }
}
() {
html = ({
url
})
.(, )
$ = cheerio.(html)
movieNodes = $().()
movieList = ([])..(movieNodes, {
(node)
})
movieList
}
() {
count =
list = []
( i = ; i < count; i++) {
url = basicUrl +
list.(... (url, i))
}
.(list.)
fs.(, .(list), , {
.()
})
}
()


