教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

栏目: Node.js · 发布时间: 5年前

内容简介:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。这是github项目地址:

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

这是github项目地址:

github.com/wangji817/n…

这是网站:

www.xyji.top:5678/views/

爬虫目标

以掘金和csdn技术文章作为爬取目标,最终实现至本地网页展示

爬虫技术

Nodejs作为核心后端爬取媒介 Mysql 作为数据存储 Webpack+react+ant Design作为前端页面数据展示

爬虫框架

superagent基于nodejs服务端请求的模块,是轻量级更为优化的ajax API,对比大量糟糕的现存的API,SuperAgent是灵活的、易读的、并且非常易学,同时SuperAgent可用于Node.js!

爬虫实现

1)创建爬虫项目文件夹,例如:pachong

2)初始化项目,npm init,一切默认回车;

3)安装模块:

npm install --save-dev antd,babel-core,babel-loader,babel-plugin-import,babel-plugin-transform-runtime,babel-preset-es2015,babel-preset-react,cheerio,compression,compression-webpack-plugin,css-loader,extract-text-webpack-plugin,fs,gzip-loader,html-loader,jquery,less,less-loader,moment,mysql,node-sass,react,react-dom,react-router,react-router-dom,sass-loader,style-loader,superagent,webpack,webpack-dev-server
复制代码

可能有部分模块没用,但不影响项目使用。

4)完整项目文件如图:

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

asset:公共资源文件夹

component:组件文件夹

dist:打包文件夹

images:本地图片

src:入口文件夹

views:静态页面文件夹

.babelrc,nightIndex.js:nodejs启动文件

mysql.json:mysql数据库配置文件

requestUrl.json:请求源配置文件

webpack.config.js

5)先配置webpack.config.js

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

核心配置: entry-获取入口文件夹列表 output-打包文件到dist目录 devServer-服务器配置 module-模块预处理 plugins-插件列表 具体可以查阅webpack官网api教程;

6)devServer配置项中proxy为反向代理,可以解决跨域问题,这里请求的本地服务。

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

7)优先创建好mysql,创建数据库jjchapter,2个表,chapterlist和csdnlist表

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站
教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

8)配置nightIndex.js文件,主要引入express,superagent模块,用于服务端启动和请求,引用请求源文件requestUrl.json,mysql.json数据库文件

9)如图:requestUrl.json为:

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

mysql.json为:

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

10)用nodejs作为服务端,请求时需要设置跨域请求的中间件:

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

11)引入mysql模块,创建mysql数据库缓存池,提高数据库读取性能

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

12)编写查询,增加数据库操作

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

pool.getConnection((err,conn)=>{...})为创建数据库池链接,返回err,conn对象,conn为当前数据库连接对象,后续需要此对象归还连接资源,减少资源占用;

13)编写掘金和csdn爬取方法:

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站
教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

此处用到了superagent模块的.post请求,_request.post(url).send(请求头).set(“设置请求头”,””).then(res=>{成功回调函数}).catch(err=>{失败回调函数});由于掘金需要设置请求头,.set("x-Agent","Juejin/Web").set("Accept","application/json")以及RequestUrl.juejinReq.requestHead;csdn比较简单,只需要请求一个地址即可。返回的数据由res.body下获取;

14)由于数据需要不停的去爬取保存到数据库,定义个间隔10分钟请求一次掘金跟csdn的函数,用于自动爬取手段

15)Node服务已经准备完毕。接下来就是将爬取到本地数据如何渲染到html上。

16)前面webpack提到src是入口文件夹,那么app是整个页面的入口文件,配置如下

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

17)component/app/app.js主要组件渲染

教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站
教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站

其中引用了ant design的部分组件api,react,react-router-dom模块,该组件主要是将头尾公共部分抽离进行展示,中间内容展示区域将有BrowserRouter,Route,Link组件路由到指定内容组件,提高组件渲染;

18)Home组件,掘金内容展示组件,采用ant的Layout布局,List列表组件自上而下滚动加载。

19)Csdn组件,同理,多出icon元素的展示。

20)首屏数据请求函数

由于掘金跟csdn返回的数据结构不一致,在data传递的type类型做了区分

21)下拉加载绑定$(window).on(‘scroll’,func)滚动事件到底部监听;当数据请求完时,取消绑定滚动事件。

22)Html页面展示有多元化,每个人按自己的喜好去展示。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

京东技术解密

京东技术解密

京东研发体系 / 电子工业出版社 / 2014-11-18 / 65

京东高速的增长、闪电响应的供应链、庞大的团队规模等背后内幕,对于业界一直像谜一样神秘。随着成为中国B2C领导厂商以及在纳斯达克上市,京东越来越需要开放自己,与业界形成更好的交流与融合。《京东技术解密》的面世,就是京东技术团队首次向业界集体亮相。本书用翔实的内容为读者逐一解答——如何用技术支撑网站的综合竞争实力,如何把握技术革新的时间点,如何应对各种棘手问题及压力,如何在网站高速运转的情况下进行系统......一起来看看 《京东技术解密》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具