提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
网络爬虫是按照一定规则自动获取网络信息数据的一种程序
本次爬虫实验项目目标是选取新闻网站建立爬虫,对新闻页面进行分析,爬取出编码、标题、作者、时间、关键词、摘要、内容、来源等结构化信息并存储在数据库中,再建立个人网页提供对爬取内容的分项全文搜索。
一、必要工具安装
1.Node.js安装
Node.js是一个让 JavaScript 运行在服务端的开发平台,本次要使用Node.js实现网络爬虫。
选择合适的版本下载,然后不断next到选定地址安装。
判断安装成功:打开cmd,输入node -v与npm -v,若输出版本号即表示安装成功。
2.安装vscode插件
打开vscode应用商城下载node.js相关插件
3.安装数据库
这里我下载了phpstudy,使用里面自带的数据库进行后续操作
二、爬取前操作
为了使后端代码更加规范,这里使用了express框架
创建reptile文件夹存放代码模块等,用cmd运行express reptile来创建后端express项目
然后进入reptile目录下运行npm install,安装依赖包,生成package.json与package-lock.json。
打开package.json文件,修改node为nodemon,使得代码每次修改后自动重新启动服务器,之后安装nodemon模块并启动服务器。
成功创建express项目:
之后需创建爬虫路由,先创建爬虫代码(newsList.js)并在app.js中添加代码
var newsListRouter = require('./routes/newsList');
app.use('/newsList', newsListRouter)
页面内容如下:
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('reptile List');
});
module.exports = router;
添加爬虫需要的模块,通过npm install… -s 安装
其中cheerio是模块库,可从html的片断中构建DOM结构,然后提供像jquery一样的css选择器查询,快速、灵活、实施的jQuery核心实现。
request也是一个node.js的模块库,用于获取网页内容,即页面数据请求模块。
let cheerio = require('cheerio'); //爬虫模块
var request = require('request') //页面数据请求模块
const uk = require("unique-keygen")//生成唯一id,作为数据库id
接下来创建数据库连接,将之后爬取的新闻数据保存到数据库中
const mysql = require('mysql');
const pool = mysql.c