爬虫

NodeJS爬虫

新闻爬虫及爬取结果的查询网站

核心需求:

•1、选取3-5个代表性的新闻网站(比如新浪新闻、网易新闻等,或者某个垂直领域权威性的网站比如经济领域的雪球财经、东方财富等,或者体育领域的腾讯体育、虎扑体育等等)建立爬虫,针对不同网站的新闻页面进行分析,爬取出编码、标题、作者、时间、关键词、摘要、内容、来源等结构化信息,存储在数据库中。

•2、建立网站提供对爬取内容的分项全文搜索,给出所查关键词的时间热度分析。

•技术要求:

•1、必须采用Node.JS实现网络爬虫

•2、必须采用Node.JS实现查询网站后端,HTML+JS实现前端(尽量不要使用任何前后端框架)

一、数据获取

通过爬取中国财经网

http://finance.china.com.cn/ 的新闻内容,如图所示。

在这里插入图片描述

然后,通过JavaScript编写相关爬虫代码,获取相应的新闻URL和相关信息

获取URL:这里需要根据要爬的网站的格式修改url_reg,这是一个正则表达式,该网站的格式为 http://finance.china.com.cn/…一些内容/ 8个数字/ 7个数字 .shtml

具体表示为:

//http://finance.china.com.cn/news/20210427/5559544.shtml
var url_reg = /\/(\d{8})\/(\d{7}).shtml/;

当url_reg格式正确了才能通过test,从而获得url
在这里插入图片描述

输出为:

在这里插入图片描述

获取到url以后就可以调用获取新闻内容的方法,在调用前需要判断该新闻是否已经爬过

在这里插入图片描述

newsGet(myURL)方法

需要解析HTML页面,动态执行format字符串
在这里插入图片描述

在这里插入图片描述

这里要注意的是各个网址的属性的format可能会有不同,需要查看网页源代码重新确认format,这里也是我当时的踩坑之处,因为format设置的不正确导致提取不到对应的内容。
在这里插入图片描述

获取title/keywords/author/publish_date/crawltime/content/createtime

当提取到相应属性的内容后,就可以将其插入数据库

  • 数据库的schema为:
  • 将id_fetches作为主键,url保证唯一性
    在这里插入图片描述
    在这里插入图片描述

通过Navicat查看数据库表,共134条数据:
在这里插入图片描述

二、前端展示

具体步骤为:

•1、用mysql查询已爬取的数据

  • 根据标题搜索相关的新闻条目,实现模糊查询
    在这里插入图片描述

•2、用网页发送请求到后端查询

  • 当在网页中点击查询button后,将会路由到/process_get?title= input 将input传入函数中进行sql语句的模糊查询
    在这里插入图片描述

•3、用express构建网站访问mysql

  • 这里的express框架类似于一个路由,不同的请求对应了不同的路由,实现前后端的交互
    在这里插入图片描述

  • 作为一个颜控,不能忍受自己的前端过于简陋,因此这里我使用了一个叫做layui的前端辅助模板,简而言之,可以引用layui里自带的css样式来美化前端,这为自己动手设计前端省下了很多功夫,其具体用法见官方文档 www.layui.com

  • 通过引入链接,就可以使用它自带的css模板了
    在这里插入图片描述

  • 比如:

在这里插入图片描述

  • 在实现展示数据的基础上,我对数据做了一个分页,layui有相应的分页模板,在上面作相应改动即可,这里主要是输出的数据格式需要改动,需要用 $(#record2)这个类型的对象写出数据
    在这里插入图片描述

在这里插入图片描述

•4、用表格显示查询结果

  • 通过查询与标题相关的信息,可以进行查询
    在这里插入图片描述

  • 可以进行分页
    在这里插入图片描述

  • 同样的前端,可以再创建一个HTML文件,路由到/time_analysis 更改sql语句,获取时间分析
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值