Web编程期中作业③
(mysql数据库的构建)
目录
前言
在实验项目②中,我们已经完成了对中国新闻网、新浪网、网易、中证网、东方财富网等多个网站的爬虫设计,下面将这些爬取出来的数据导入到数据库中
MySQL的安装和配置
- 在官网https://dev.mysql.com/downloads/mysql/上下载MySQL Community Server 8.0.19的免安装版。
- 下载安装包后将其解压到c:\mysql文件夹 然后以管理员身份打开命令行
- 在命令行中cd c:\mysql\bin
- 安装mysql的服务:mysqld –install
- 初始化mysql:mysqld --initialize --console
- 初始化会产生一个随机密码,如下图所示
- 启动mysql:net start mysql
- 给root用户授权从客户端访问,在命令行中输入如下代码
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
flush privileges;
MySQL的使用
进入mysql后创建一个数据库表单crawl,然后再创建一个表fetches,具体在以管理员身份在命令行中进入mysql分别输入如下命令:
create database crawl
use crawl
CREATE TABLE `fetches` (
`id_fetches` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(200) DEFAULT NULL,
`source_name` varchar(200) DEFAULT NULL,
`source_encoding` varchar(45) DEFAULT NULL,
`title` varchar(200) DEFAULT NULL,
`keywords` varchar(200) DEFAULT NULL,
`author` varchar(200) DEFAULT NULL,
`publish_date` date DEFAULT NULL,
`crawltime` datetime DEFAULT NULL,
`content` longtext,
`createtime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_fetches`),
UNIQUE KEY `id_fetches_UNIQUE` (`id_fetches`),
UNIQUE KEY `url_UNIQUE` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
将已爬取的数据导入到数据库中
实验的代码应该保证在每次爬取新闻页面之前先查询数据库,是否该url已经爬取过了,可进行如下操作。
在实验②代码中的 newsGet(myURL) 函数的末尾加上如下代码
//执行sql,数据库中fetch表里的url属性是unique的,不会把重复的url内容写入数据库
mysql.query(fetchAddSql, fetchAddSql_Params, function(qerr, vals, fields) {
if (qerr) {
console.log(qerr);
}
}); //mysql写入
在MySQL数据库中的查找
在表单fetches中查找前十条url、title的信息,输入如下命令:
select url,title, from fetches limit 10;
可得到如下图所示的返回