重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“怎么用nodejs写一个代理爬虫网站”,在日常操作中,相信很多人在怎么用nodejs写一个代理爬虫网站问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用nodejs写一个代理爬虫网站”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联公司是一家专业提供灞桥企业网站建设,专注与成都网站设计、网站制作、HTML5、小程序制作等业务。10年已为灞桥众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
nodejs有很多用途,除了操作文件和做web开发之外还可以做爬虫,今天就用简单的几行代码给大家演示一下,如何用nodejs实现一个代理爬虫。
代理爬虫的原理主要应用了代理服务器和爬虫,如图所示:
程序的主要逻辑在代理服务器里面,转发请求,爬取数据,处理数据。
这里应用的技术栈包括:express、axios、cheerio、art-template
用express来创建一个web服务,axios爬取网页,cheerio处理数据、art-template渲染数据。
爬虫的目标网站是这个小说网站:https://www.biquke.com。
网站页面是这样的:
为了简单咱们只演示爬取其中一本小说,凡人修仙传https://www.biquke.com/bq/0/990/,页面如图:
第一步、首先咱们先用express来构建一个web服务器,代码如图:
回顾上面的代码,咱们设计1个路由,展示凡人修仙传的目录页面。
第二步、用axios请求目标页面,axios这个库前后端都可以用,当在浏览器中使用时其内部调用的XMLhttprequest对象发送异步请求,当在node端也就是后端使用时其调用的是node的http模块的request方法。代码如下:
打印结果如下:
仔细观察结果,这个结果就是一段html格式的字符串,这些字符串中包含这凡人修仙传这本小说的内容,我们要获取如下信息:
1、小说的书名
2、小说的最新章节
3、小说的章节列表和每一章的链接
如何获取这些信息呢?难道要用正则表达式来筛选吗?当然不是。
第三步、处理数据获取想要得到的数据,这里我们需要熟悉一个处理页面数据的npm包,cheerio,包的地址:
来看一下官网文档,看一下这个包的用法。代码如下:
打印结果如下:
从以上结果我们可以看出cheerio的作用就是将html结构的字符串转换成类似jquerydom对象的一种格式,然后用jquery的选择器筛选想要获得的数据,明白了以上用法,我们就可以继续往下进行了,处理数据,代码如下:
浏览器端发送求,在终端查看打印结果:
以上便得到了我们想要的数据,只有结果不是咱们最终结果,我们希望将数据渲染成页面返回给用户这里就用到了art-template。
第四步、用art-template将数据渲染成页面,代码如下:
模板代码如下:
注意列表在渲染的时候每一章的a标签链接的处理方式。
请求首页地址结果如下:
以上只是目录页的实现方式,接下来每一章的详情页,这里需要注意,详情页路由再设计的时候,我们设置了一个params的请求参数,通过这个参数,我们可以拼接处用户请求的是那一章的数据,从而去处理数据。代码如下:
代码地址如下: https://github.com/clm1100/spidertest
到此,关于“怎么用nodejs写一个代理爬虫网站”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!