灌篮少年 发表于 2024-7-18 17:14:40

AIGC爬虫实战(一)

前言

传统的网络爬虫系统服从较低且难以应对复杂多变的网页环境
基于AIGC技术的智能化爬虫,则可以大幅提升爬虫的自主性和适应性,从而更高效地完成网络数据的采集和分析任务
本文将通过一系列实战案例,深入探讨AIGC技术在网络爬虫开发中的详细应用
代码实现

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fp0-xtjj-private.juejin.cn%2Ftos-cn-i-73owjymdk6%2F37cdf35857514cd1abb3d4bce598509c~tplv-73owjymdk6-watermark.image%3Fpolicy%3DeyJ2bSI6MywidWlkIjoiNTU2ODI2MjAxOTUzMjgzIn0%253D%26rk3s%3Df64ab15b%26x-orig-authkey%3Df32326d3454f2ac7e96d3d06cdbb035152127018%26x-orig-expires%3D1720763271%26x-orig-sign%3DUcvQFu6DN4YaHecIkWx7%252FvULKVM%253D&pos_id=img-uaJQJeNY-1720676988711
首先安装一下request-promise和cheerio
npm install request-promise

npm install cheerio

[*] 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);
});


[*] cheerio:

[*] cheerio 是一个用于剖析和处理 HTML 的 jQuery 核心功能的实现。
[*] 它提供了一套雷同于欣赏器中 jQuery 的 API,让开发者可以利用熟悉的选择器语法来遍历、搜索和操纵 HTML 文档。
[*] 与 JSDOM 等完整的 DOM 剖析器相比,cheerio 更加轻量级和高效,适合在服务器端举行 HTML 剖析和数据提取。
[*] 示例代码:
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>


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

[*] 引入所需的Node.js模块:

[*]request-promise: 用于发送HTTP哀求并获取页面内容
[*]cheerio: 用于剖析HTML页面,提取所需的数据
[*]fs: 用于写入JSON文件

[*] 定义底子URL:

[*]basicUrl = 'https://movie.douban.com/top250'

[*] 定义getMovieInfo函数:

[*]该函数接受一个HTML节点作为参数
[*]利用cheerio剖析节点,提取影戏的标题、信息和评分
[*]将提取的数据封装成一个对象并返回

[*] 定义getPage函数:

[*]该函数接受一个URL和页码作为参数
[*]利用request-promise发送HTTP哀求获取页面内容
[*]利用cheerio剖析页面,提取每部影戏的信息
[*]将提取的数据封装成一个数组并返回

[*] 定义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文件中
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fp0-xtjj-private.juejin.cn%2Ftos-cn-i-73owjymdk6%2Ffd9a05f152e949ef9c68a721fb017887~tplv-73owjymdk6-watermark.image%3Fpolicy%3DeyJ2bSI6MywidWlkIjoiNTU2ODI2MjAxOTUzMjgzIn0%253D%26rk3s%3Df64ab15b%26x-orig-authkey%3Df32326d3454f2ac7e96d3d06cdbb035152127018%26x-orig-expires%3D1720763271%26x-orig-sign%3DbRO4fZhKESMck4U91V0Q8P6jjwc%253D&pos_id=img-WwHXrWZ2-1720676988711
可以看到我们的数据格式照旧有点问题的
接下来我们将第一个数据将它交给AI处理一下
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fp0-xtjj-private.juejin.cn%2Ftos-cn-i-73owjymdk6%2F5b77d7e844424d2793821a04ca562c87~tplv-73owjymdk6-watermark.image%3Fpolicy%3DeyJ2bSI6MywidWlkIjoiNTU2ODI2MjAxOTUzMjgzIn0%253D%26rk3s%3Df64ab15b%26x-orig-authkey%3Df32326d3454f2ac7e96d3d06cdbb035152127018%26x-orig-expires%3D1720763271%26x-orig-sign%3D88H1svtyAHz6yO3yLhFA4gKvX4k%253D&pos_id=img-fH5UqpMW-1720676988711
可以看到AI给我们处理的不错,所以AI可以或许有效的进步我们爬取处理数据的服从
下篇文章我们将讲解一下怎样在项目中调用AI的API去快捷处理数据
总结

本文将通过实战案例,深入探讨AIGC技术在网络爬虫开发中的详细应用
基于AIGC技术的智能化爬虫,则可以大幅提升爬虫的自主性和适应性,从而更高效地完成网络数据的采集和分析任务,AI在项目中的鼎力大举利用可以或许有效得提升项目的能力

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: AIGC爬虫实战(一)