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

相关推荐
飞哥数智坊9 小时前
分享被迫变直播:AI·Spring养虾记就这样上线了
人工智能
Moment11 小时前
Vibe Coding 时代,到底该选什么样的工具来提升效率❓❓❓
前端·后端·github
Mr_Lucifer12 小时前
「一句话」生成”小红书“式金句海报(CodeFlicker + quote-poster-generator)
人工智能·aigc·visual studio code
冬奇Lab12 小时前
OpenClaw 深度解析(五):模型与提供商系统
人工智能·开源·源码阅读
冬奇Lab13 小时前
一天一个开源项目(第42篇):OpenFang - 用 Rust 构建的 Agent 操作系统,16 层安全与 7 个自主 Hands
人工智能·rust·开源
IT_陈寒13 小时前
SpringBoot性能飙升200%?这5个隐藏配置你必须知道!
前端·人工智能·后端
yiyu071613 小时前
3分钟搞懂深度学习AI:反向传播:链式法则的归责游戏
人工智能·深度学习
小时前端13 小时前
React性能优化的完整方法论,附赠大厂面试通关技巧
前端·react.js
机器之心14 小时前
OpenClaw绝配!GPT-5.4问世,AI能力开始大一统,就是太贵
人工智能·openai
机器之心14 小时前
海外华人15人团队打造,统一理解与生成的图像模型,超越Nano banana登顶图像编辑
人工智能·openai