新闻爬虫以及爬取结果查询网站搭建(一)
实验要求
1、选取3-5个代表性的新闻网站(比如新浪新闻、网易新闻等,或者某个垂直领域权威性的网站比如经济领域的雪球财经、东方财富等,或者体育领域的腾讯体育、虎扑体育等等)建立爬虫,针对不同网站的新闻页面进行分析,爬取出编码、标题、作者、时间、关键词、摘要、内容、来源等结构化信息,存储在数据库中。
2、建立网站提供对爬取内容的分项全文搜索,给出所查关键词的时间热度分析。
技术要求
1、必须采用Node.JS实现网络爬虫
2、必须采用Node.JS实现查询网站后端,HTML+JS实现前端(尽量不要使用任何前后端框架)
爬虫准备工作
一共选了三个新闻网站进行爬虫,分别是中国财经网、雪球网、网易新闻,并且将爬取结果存储在postgresql中。
在本实验中,基于Node.js用Cheerio和Request实现了爬虫。下面将详细介绍基本环境搭配,各个爬虫的实现,功能实现过程等内容。
Node.js 介绍与安装配置
Node.js介绍
-
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!
-
Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。
-
Node.js 应用程序运行于单个进程中,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原生功能(用以防止 JavaScript 代码被阻塞),并且 Node.js 中的库通常是使用非阻塞的范式编写的(从而使阻塞行为成为例外而不是规范)。
-
Node.js 具有独特的优势,因为为浏览器编写 JavaScript 的数百万前端开发者现在除了客户端代码之外还可以编写服务器端代码,而无需学习完全不同的语言。
-
在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为不必等待所有用户更新其浏览器,你可以通过更改 Node.js 版本来决定要使用的 ECMAScript 版本,并且还可以通过运行带有标志的 Node.js 来启用特定的实验中的特性。
Node.js安装
安装参考node.js官网:https://nodejs.org/zh-cn/
Request库安装
Request是Node.js的模块库,可完成http请求。
npm install request
使用方法:
var request = require('request');
request('url', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
});
Cheerio安装
cheerio是一个nodejs实现的类似jquery核心功能的一个模块,用它可以方便的将字符串解析成DOM文档,像用jquery一样方便的操作html。
安装方式:
npm install cheerio
Iconv-lite安装
Iconv-lite是用来转化字符编码的库,具备如下几个特点:
- 不需要编辑原生代码
- 比node-iconv更快的速度
- 直观的编码/解码API
安装方式:
npm install iconv-lite
数据库安装
本项目通过PostgreSQL关系型数据库存储爬取的结构化数据
PostgreSQL简介:
- PostgreSQL在业内通常也简称PG,是一个关系型数据库管理系统,适用于各种Linux操作系统、Windows、Solaris、BSD和Mac OS X。
- PostgreSQL遵循BSD许可,是一个开源软件,PostgreSQL作为全球第四大关系型数据库服务,正在以飞快的速度发展,目前已经广泛用在各个行业。
数据库安装:
官网上下载,官网链接https://www.postgresql.org/