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

相关推荐
互联网江湖6 分钟前
携程当学胖东来
人工智能
陌殇殇19 分钟前
001 Spring AI Alibaba框架整合百炼大模型平台 — 快速入门
人工智能·spring boot·ai
Proxy_ZZ028 分钟前
用Matlab绘制BER曲线对比SPA与Min-Sum性能
人工智能·算法·机器学习
黎阳之光28 分钟前
黎阳之光:以视频孪生领跑全球,赋能数字孪生水利智能监测新征程
大数据·人工智能·算法·安全·数字孪生
专吃海绵宝宝菠萝屋的派大星39 分钟前
使用Dify对接自己开发的mcp
java·服务器·前端
宇擎智脑科技39 分钟前
基于 SAM3 + FastAPI 搭建智能图像标注工具实战
人工智能·计算机视觉
爱分享的阿Q39 分钟前
Rust加WebAssembly前端性能革命实践指南
前端·rust·wasm
蓝黑202041 分钟前
Vue的 value=“1“ 和 :value=“1“ 有什么区别
前端·javascript·vue
F_U_N_1 小时前
效率提升80%:AI全流程研发真实项目落地复盘
人工智能·ai编程
小李子呢02111 小时前
前端八股6---v-model双向绑定
前端·javascript·算法