当前位置: 首页 > java >正文

AI编程之Nodejs+MYSQL写一个爬虫系统

AI编程在软件开发领域的应用非常广泛,下面我们就利用AI来让Nodejs与MYSQL写一个爬虫系统。 

AI编程之Nodejs+MYSQL写一个爬虫系统视频详解(直接看第11讲):

【2025年新版】DeepSeek教程

 

文档资料学习

帮我写一个Nodejs爬取数据写入Mysql的案例,信息如下:
1、Mysql数据库地址是:192.168.1.20 ,mysql用户名是:root, Mysql密码是:123456,要操作
的数据库是:ginxiaomi
2、需要提供nodejs需要安装的依赖
3、要爬取的网址是http://bbs.itying.com/
4、需要把爬取的每一条新闻信息写入到artice表,article表有id,title,status字段
npm install axios cheerio mysql2

 

const axios = require('axios');
const cheerio = require('cheerio');
const mysql = require('mysql2/promise');
// MySQL连接配置
const connectionConfig = {
host: '192.168.1.20',
user: 'root',
password: '123456',
database: 'ginxiaomi'
};
// 异步函数来执行爬取和写入操作
async function fetchAndInsertArticles() {
try {
// 建立数据库连接
const connection = await mysql.createConnection(connectionConfig);
// 爬取网页
const response = await axios.get('http://bbs.itying.com/');
const html = response.data;
// 使用cheerio解析HTML
const $ = cheerio.load(html);
// 假设新闻列表的HTML结构是已知的,这里需要根据实际网页结构调整选择器
// 假设每个新闻项都有一个特定的类名'news-item',并且包含title和status信息
// 注意:这里的选择器和字段提取逻辑需要根据实际网页内容进行调整
$('div.news-item').each(function(i, elem) {
const title = $(this).find('.news-title').text().trim(); // 假设新闻标题
在.news-title类中
const status = 'active'; // 假设status字段是固定的,或者你可以根据网页内容提取
// 构建插入SQL语句
const query = `INSERT INTO article (title, status) VALUES (?, ?)`;
// 执行插入操作
await connection.execute(query, [title, status]);
console.log(`Inserted article with title: ${title}`);
});
// 关闭数据库连接
await connection.end();
} catch (error) {
console.error('Error occurred:', error);
}
}
// 调用函数
fetchAndInsertArticles();

 

修改代码

const axios = require('axios');
const cheerio = require('cheerio');
const mysql = require('mysql2/promise');
// MySQL连接配置
const connectionConfig = {
host: '192.168.1.20',
user: 'root',
password: '123456',
database: 'ginxiaomi'
};
// 异步函数来执行爬取和写入操作
async function fetchAndInsertArticles() {
try {
// 建立数据库连接
const connection = await mysql.createConnection(connectionConfig);
// 爬取网页
const response = await axios.get('http://bbs.itying.com/');
const html = response.data;
// 使用cheerio解析HTML
const $ = cheerio.load(html);
// 假设新闻列表的HTML结构是已知的,这里需要根据实际网页结构调整选择器
// 假设每个新闻项都有一个特定的类名'news-item',并且包含title和status信息
// 注意:这里的选择器和字段提取逻辑需要根据实际网页内容进行调整
$('#topic_list .topic_title').each(function (i, elem) {
const title = $(this).text().trim(); // 假设新闻标题在.news-title类中
const status = '1'; // 假设status字段是固定的,或者你可以根据网页内容提取
// 构建插入SQL语句
const query = `INSERT INTO article (title, status) VALUES (?, ?)`;
// 执行插入操作
connection.execute(query, [title, status]);
console.log(`Inserted article with title: ${title}`);
});
// 关闭数据库连接
await connection.end();
} catch (error) {
console.error('Error occurred:', error);
}
}
// 调用函数
fetchAndInsertArticles();

 

 

http://www.xdnf.cn/news/1249.html

相关文章:

  • Python数据分析与机器学习实战:从数据到洞察的完整路径
  • vue中将elementUI和echarts转成pdf文件
  • 【DeepSeek 学习推理】Llumnix: Dynamic Scheduling for Large Language Model Serving实验部分
  • TM2SP-Net阅读
  • 日本电网的特点及分布地图
  • Linux 安装pm2并全局可用
  • Nginx常用命令,及常见错误
  • WHQL认证中Windows HCK与HLK的区别
  • 丙烯酸及酯:化学工业的“隐形支柱”与未来增长引擎
  • 基于意法半导体STM32G473和STDRIVE 101的电池供电BLDC/PMSM电动工具
  • 鸿蒙生态新利器:华为ArkUI-X混合开发框架深度解析
  • 第33周JavaSpringCloud微服务 电商进阶开发
  • opencv图像的梯度处理,边缘检测
  • 【每天一个知识点】大模型的幻觉问题
  • leetcode0207. 课程表-medium
  • PageIndex:构建无需切块向量化的 Agentic RAG
  • WordPress 只能访问html文件,不能访问php
  • Linux[基础指令][2]
  • 【Win11】Docker Desktop 报错 wsl --update
  • 全球化2.0 | 云轴科技ZStack亮相2025香港国际创科展
  • python番外
  • 【android bluetooth 协议分析 11】【AVDTP详解 1】【宏观感受一下avdtp是个啥东东】
  • 代码随想录算法训练营第五十六天 | 108.冗余连接 109.冗余连接II
  • transformer 子层连接结构
  • 每日算法-哈希表(两数之和、)
  • STM32串口重定向:MDK与GCC重定向需重写的不同函数
  • UE5 鼠标点击一个物体触发Onclick事件
  • 死信队列完整处理方案
  • AiEditor v1.3.8 发布
  • 2023蓝帽杯初赛内存取证-3