网页新闻抓取(新闻爬虫及爬取结果查询网站的搭建(一))
优采云 发布时间: 2021-10-01 02:25网页新闻抓取(新闻爬虫及爬取结果查询网站的搭建(一))
新闻爬虫构建及爬取结果查询网站(一)
实验要求 核心要求
1、选择3-5条代表性新闻网站(如新浪新闻、网易新闻等,或垂直领域的权威网站,如经济领域的雪球财经、东方)财富等,或体育领域的腾讯体育、虎扑体育等)建立爬虫分析网站的不同新闻页面,爬取代码、标题、作者、时间、关键词 、摘要、结构化信息如内容和来源存储在数据库中。
2、建立网站,提供对爬取内容的子项全文搜索,并给出搜索到的关键词的时间流行度分析。
技能要求
1、 必须使用Node.JS来实现网络爬虫
2、必须使用Node.JS实现查询。网站后端,HTML+JS实现前端(尽量不要使用任何前后端框架)
爬行动物准备
一共选择了三个新闻网站进行抓取,分别是中国财经网、雪球网、东方财富网,抓取结果存储在postgresql中。
在本次实验中,基于 Node.js 的 Cheerio 和 Request 实现了一个爬虫。下面将详细介绍基础环境搭配、各个爬虫的实现、功能实现过程等。
Node.js 安装和配置
Node.js 官网:
安装非常简单,只要跟着一点点就行了。
vscode
Visual Studio Code(以下简称 vscode)是一个轻量级且功能强大的跨平台开源代码编辑器(IDE),支持 Windows、OS X 和 Linux。内置JavaScript、TypeScript和Node.js支持,拥有丰富的插件生态,可以安装插件支持C++、C#、Python、PHP等多种语言。
在这个实验中,我使用了 vscode 来调试 node.js。
可以参考官网:
要求
Request 也是一个 Node.js 模块库,可以轻松完成 http 请求。
安装
npm install request 的基本用法:
本次实验中,新闻页面主要通过请求获取。主要使用其默认的 GET 方法。
var request = require('request');
request('url', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}
});
Cheerio 解析 HTML 简介(加载)
首先需要手动加载html文档,使用方法如下,其他更多加载方法可以参考官方文档
var cheerio = require('cheerio'),
$ = cheerio.load('...');
选择器
Cheerio 选择器几乎与 jQuery 相同。选择器是文档遍历和操作的起点。与在 jQuery 中一样,它是选择元素节点的最重要方法,但在 jQuery 中,选择器建立在 CSS 选择器标准库之上。
在本实验中,主要使用以下选择器方法。
选择页面上的所有超链接。首先获取页面中的所有标签,然后遍历获取其href属性的值,具体部分代码如下:
try {
seedurl_news = $('a');
} catch (e) { console.log('url列表所处的html块识别出错:' + e) };
seedurl_news.each(function(){
try {
var href = "";
href = $(this).attr('href'); //获取href属性
}catch(e) {
console.log('get the seed url err' + e);
}
}
根据指定的类属性名称进行选择。注意类名有空格时,改成.,示例代码如下:
$('.source.data-source')
如果要选择某个标签下它的子标签的内容,但是它的子标签没有唯一的类名或者id对应,可以使用.children(selector)来选择它的子节点,eq()就是选择几个子节点,从0开始。示例代码如下:
$('.article-meta').children().eq(1).text();
数据库存储