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();