• AIGC爬虫实战(一)


    前言

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

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

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

    代码实现

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    首先安装一下request-promise和cheerio

    npm install request-promise
    
    npm install cheerio
    
    1. request-promise:

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

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

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

      • 示例代码:

        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 解析和数据提取。

      • 示例代码:

        const cheerio = require('cheerio');
        
        const $ = cheerio.load('

        Hello, cheerio

        '); $('h2.title').text('Hello, world.'); $('h2').addClass('welcome'); console.log($.html()); // Output:

        Hello, world.

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

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

  • 相关阅读:
    医疗健康产品展:联影医疗
    【面向对象】理解面向对象编程中的封装性
    PC_磁盘HDD_SSD/存储介质(材料工艺)
    Pandas 掉包侠刷题实战--条件筛选
    SimpleChannelInboundHandler使用总结
    【JavaScript】解构
    2023年台州市第三届网络安全技能大赛(MISC)—Black Mamba
    安卓Kotlin面试题 41-50
    cnpm i报错:node-sass@^6.0.1 run postinstall node scripts/build.js error
    Windows NFS 真弱 → 中文乱码导致文件找不到
  • 原文地址:https://blog.csdn.net/weixin_56440777/article/details/140349960