新闻爬虫以及爬取结果查询网站搭建(三)

概要

本节主要介绍如何进行爬虫结果展示网站搭建。
有以下几部分:
1、前端网页设计
2、前端发送http post请求到后端
3、express构建后端访问pgsql
4、后端响应前端请求并在前端网页中用表格显示查询结果

前端网页设计

设计一

首先构造简单的前端,代码如下:

<!DOCTYPE html>
<html>
<body>
<title>新闻检索</title>
<form action="http://127.0.0.1:3030/title" method="GET">
    <h1 align="center">根据新闻标题搜索:</h1>
    <div style="text-align:center;vertical-align:middel;"><input type="text" name="title" id="title_text">  </div>
    <div style="text-align:center;vertical-align:middel;"><input type="button" value="搜索" id="title_button"> </div>
</form>
<form action="http://127.0.0.1:3030/source_name" method="GET">
	<h1 align="center">根据网站名搜索:</h1>
    <div style="text-align:center;vertical-align:middel;"> <input type="text" name="source_name" id="source_name_text">  </div>
    <div style="text-align:center;vertical-align:middel;"> <input type="button" value="搜索" id="source_name_button"> </div>
</form>
<form action="http://127.0.0.1:3030/keyword" method="GET">
	<h1 align="center">根据新闻关键词搜索:</h1>
    <div style="text-align:center;vertical-align:middel;"> <input align="center" type="text" name="keyword" id="keyword_text">   </div>
    <div style="text-align:center;vertical-align:middel;"> <input align="center" type="button" value="搜索" id="keyword_button">  </div>
</form>
<form action="http://127.0.0.1:3030/keywords" method="GET">
	<h1 align="center">根据新闻关键词查看时间热度:</h1>
    <div style="text-align:center;vertical-align:middel;"> <input type="text" name="keyword" id="order_keyword_text">  </div>
    <div style="text-align:center;vertical-align:middel;"> <input type="button" value="搜索" id="order_keyword_button"> </div>
</form>
</body>
</html>

显示效果如下图所示:

在这里插入图片描述

设计二

为了美观,在实现了基本功能后,后期又增加了博客中常见的动态图案。

<script type="text/javascript" opacity = 1 color = "0,0,255"  src="//cdn.bootcss.com/canvas-nest.js/1.0.1/canvas-nest.min.js"></script>

对查询结果进行分页显示

前端网页使用了Js组件:bootstrap table。
Bootstrap table 是一款基于 Bootstrap 的 jQuery 表格插件,功能比较完备,能够实现数据异步获取,编辑,排序等一系列功能,最可贵的是,只需要一些简单的配置就可以实现一个功能完备的在线表格。
详情可以参考bootstrap table 官方文档
前端代码如下:(以其中的一个表格实现为例)

$("#title_button").click(function() {
            $('#soucename_table').bootstrapTable('destroy');
            $('#keyword_table').bootstrapTable('destroy');
            $('#keywords_table').bootstrapTable('destroy');
     var title = $("#title_text").val();
     var params = '/get_title?title=' + title;
     $(function(){
                    // console.log(params);
                    $("#title_table").empty();
                    $('#title_table').bootstrapTable({
                        url:params,
                        method:'GET',
                        pagination:true,
                        sidePagination:'client',
                        pageSize:5,
                        striped : true,
                        sortable : true,
                        sortOrder:"asc",
                        showRefresh:true,
                        search:true,
                        showToggle: true,
                        toolbar: '#toolbar',
                        showColumns : true,
                        columns:[{
                            field :'url',
                            title : 'url',
                            sortable : true
                        }, {
                            field:'title',
                            title:'title'
                        }, {
                            field:'source_name',
                            title:'source_name',
                            sortable : true
                        },{
                            field:'publish_date',
                            title:'publish_date',
                            sortable : true
                        }]
                    })
                });
     $.get(params, function(data) {
                    $('#title_table').bootstrapTable('refresh',{
                        url:params,
                        method:'GET',
                        pagination:true,
                        sidePagination:'client',
                        showRefresh:true,
                        columns:[{
                            field :'URl',
                            title :'url'
                        }, {
                            field:'Title',
                            title:'title'
                        }, {
                            field:'Source',
                            title:'source_name'
                        },{
                            field:'Date',
                            title:'publish_date'
                        }]
                    })
                    $("#title_table").append('<tr class="cardLayout"><td>url</td><td>source_name</td>' +
                       '<td>title</td><td>publish_date</td></tr>');
                });
                $('#title_text').val('');
  });

这段javascript代码内嵌在html网页中,当用户点击搜索新闻标题栏下的搜索按钮后,将会自动执行内嵌的javascript代码,并向后端服务器发送Get请求。后端服务器通过url获得title的信息并通过和数据库的交互实现查询功能,最后将查询结果发送http响应到前端,前端在接收到响应之后获取其中的参数信息并自动生成相应的表格信息。

最终网页效果如下:

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值