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在项目中的大力使用能够有效得提升项目的能力

相关推荐
火山引擎开发者社区26 分钟前
Seedance 2.0 1080P 生成能力正式上线
人工智能
冬奇Lab35 分钟前
一天一个开源项目(第79篇):生化危机女主角亲自开源的 AI 记忆系统 MemPalace
人工智能·开源·资讯
冬奇Lab37 分钟前
Android 开发要变天了:Google 专为 Agent 重建工具链,Token 减少 70%、速度提升 3 倍
android·人工智能·ai编程
慧一居士39 分钟前
Open WebUI 和Ollama 区别对比和关系
人工智能
Web极客码1 小时前
深入了解WordPress网站访客意图
服务器·前端·wordpress
云安全助手1 小时前
2026年AI安全大模型实战指南:快快云安全AI能力全景解析
人工智能·网络安全·claude
fuquxiaoguang1 小时前
当AI开始改写自己的“进化引擎”:从DGM到HyperAgents
人工智能·hyperagents
bKYP953cL1 小时前
构建自己的AI编程助手:基于RAG的上下文感知实现方案
数据库·人工智能·ai编程
数字供应链安全产品选型1 小时前
在供应链攻击激增200%的时代,如何用AI原生安全重塑防御边界?
人工智能
枫叶林FYL1 小时前
项目七:实时异常检测与告警系统——基于统计与机器学习的数据质量监控平台
人工智能·自然语言处理