AIGC爬虫实战(一)

前言

传统的网络爬虫系统效率较低且难以应对复杂多变的网页环境

基于AIGC技术的智能化爬虫,则可以大幅提升爬虫的自主性和适应性,从而更高效地完成网络数据的采集和分析任务

本文将通过一系列实战案例,深入探讨AIGC技术在网络爬虫开发中的具体应用

代码实现

首先安装一下request-promise和cheerio

js 复制代码
npm install request-promise

npm install cheerio
  1. request-promise:

    • request-promise 是一个基于 request 库的 Promise 封装库。它使得发出 HTTP 请求变得更加简单和优雅。

    • 与原生的 fetch API 相比,request-promise 提供了更丰富的功能,如支持 cookie、代理设置、自定义报头等。

    • 使用 request-promise 可以轻松地进行异步 HTTP 请求,并通过 Promise 链处理结果,大大简化了回调嵌套的问题。

    • 示例代码:

      javascript 复制代码
      const rp = require('request-promise');
      
      rp('https://www.example.com')
        .then((htmlString) => {
          console.log(htmlString);
        })
        .catch((err) => {
          console.error(err);
        });
  2. cheerio:

    • cheerio 是一个用于解析和处理 HTML 的 jQuery 核心功能的实现。

    • 它提供了一套类似于浏览器中 jQuery 的 API,让开发者可以使用熟悉的选择器语法来遍历、搜索和操作 HTML 文档。

    • 与 JSDOM 等完整的 DOM 解析器相比,cheerio 更加轻量级和高效,适合在服务器端进行 HTML 解析和数据提取。

    • 示例代码:

      javascript 复制代码
      const cheerio = require('cheerio');
      
      const $ = cheerio.load('<h2 class="title">Hello, cheerio</h2>');
      
      $('h2.title').text('Hello, world.');
      $('h2').addClass('welcome');
      
      console.log($.html());
      // Output: <h2 class="title welcome">Hello, world.</h2>

接下来我们开始书写我们的代码

  1. 引入所需的Node.js模块:

    • request-promise: 用于发送HTTP请求并获取页面内容
    • cheerio: 用于解析HTML页面,提取所需的数据
    • fs: 用于写入JSON文件
  2. 定义基础URL:

    • basicUrl = 'https://movie.douban.com/top250'
  3. 定义getMovieInfo函数:

    • 该函数接受一个HTML节点作为参数
    • 使用cheerio解析节点,提取电影的标题、信息和评分
    • 将提取的数据封装成一个对象并返回
  4. 定义getPage函数:

    • 该函数接受一个URL和页码作为参数
    • 使用request-promise发送HTTP请求获取页面内容
    • 使用cheerio解析页面,提取每部电影的信息
    • 将提取的数据封装成一个数组并返回
  5. 定义main函数:

    • 该函数为程序入口点
    • 设置需要爬取的页数为25页(250部电影)
    • 使用for循环遍历每页,调用getPage函数获取数据
    • 将所有页面的数据合并成一个列表
    • 使用fs.writeFile将列表写入到output.json文件中
js 复制代码
let request = require('request-promise') // 需要安装
let cheerio = require('cheerio') // 需要安装
let fs = require('fs')
let basicUrl = 'https://movie.douban.com/top250'

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()

可以看到我们爬取的数据都在json文件中

可以看到我们的数据格式还是有点问题的

接下来我们将第一个数据将它交给AI处理一下

可以看到AI给我们处理的不错,所以AI能够有效的提高我们爬取处理数据的效率

下篇文章我们将讲解一下如何在项目中调用AI的API去快捷处理数据

总结

本文将通过实战案例,深入探讨AIGC技术在网络爬虫开发中的具体应用

基于AIGC技术的智能化爬虫,则可以大幅提升爬虫的自主性和适应性,从而更高效地完成网络数据的采集和分析任务,AI在项目中的大力使用能够有效得提升项目的能力

相关推荐
专注于ai算法的踩坑小达人几秒前
TabFM(Google Tabular Foundation Model)完整部署手册(PyTorch GPU版)
人工智能·python
Seoyoneh2 分钟前
呼叫中心云原生架构实战:微服务拆分与弹性扩容技术解析
人工智能·信息与通信·通信
AI工具测评家2 分钟前
降AI后参考文献错位、三线表变乱码?快降重vs快将AI实测:谁能降重后完整保住Word原生排版
人工智能·降重·ai检测·查重·降ai·知网检测
xy34535 分钟前
Axure 9.0 中继器创建与设置步骤
前端·ui·html·axure·原型·产品设计
FEF前端团队6 分钟前
01# Vibe Coding工作流设计思维:前端开发者的协作框架
前端·cursor·vibecoding
Geek-Chow6 分钟前
Hidden Reasoning Tokens Are Silently Truncating Your Structured JSON Output
人工智能
子非鱼eva7 分钟前
昇腾开源仓Issue分析解答-CANN精选(二)
人工智能·ai
墨林陌8 分钟前
AI 热点日报(2026-09-17):谷歌 Gemini 3.8 Live 双模型发布,OpenAI 联手 Anthropic 共商 AI 安全
人工智能
AI行业应用研究9 分钟前
会务问答机器人落地拆解:三级路由、知识库组织与防幻觉——会务小程序能自己回答参会者提问吗?
大数据·人工智能·安全·小程序·架构
海宇服务10 分钟前
零信任架构实战:基于海宇公安二要素认证即时版构建自动化号码发卡网关
运维·人工智能·架构·自动化