温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用nodejs写一个代理爬虫网站

发布时间:2021-07-15 15:39:40 来源:亿速云 阅读:159 作者:chen 栏目:大数据

这篇文章主要介绍“怎么用nodejs写一个代理爬虫网站”,在日常操作中,相信很多人在怎么用nodejs写一个代理爬虫网站问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用nodejs写一个代理爬虫网站”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

nodejs有很多用途,除了操作文件和做web开发之外还可以做爬虫,今天就用简单的几行代码给大家演示一下,如何用nodejs实现一个代理爬虫。

代理爬虫的原理主要应用了代理服务器和爬虫,如图所示:

怎么用nodejs写一个代理爬虫网站

程序的主要逻辑在代理服务器里面,转发请求,爬取数据,处理数据。

这里应用的技术栈包括:express、axios、cheerio、art-template

用express来创建一个web服务,axios爬取网页,cheerio处理数据、art-template渲染数据。

爬虫的目标网站是这个小说网站:https://www.biquke.com。

网站页面是这样的:

怎么用nodejs写一个代理爬虫网站

为了简单咱们只演示爬取其中一本小说,凡人修仙传https://www.biquke.com/bq/0/990/,页面如图:

怎么用nodejs写一个代理爬虫网站

第一步、首先咱们先用express来构建一个web服务器,代码如图:

怎么用nodejs写一个代理爬虫网站

回顾上面的代码,咱们设计1个路由,展示凡人修仙传的目录页面。

第二步、用axios请求目标页面,axios这个库前后端都可以用,当在浏览器中使用时其内部调用的XMLhttprequest对象发送异步请求,当在node端也就是后端使用时其调用的是node的http模块的request方法。代码如下:

怎么用nodejs写一个代理爬虫网站

打印结果如下:

怎么用nodejs写一个代理爬虫网站

仔细观察结果,这个结果就是一段html格式的字符串,这些字符串中包含这凡人修仙传这本小说的内容,我们要获取如下信息:

1、小说的书名

2、小说的最新章节

3、小说的章节列表和每一章的链接

如何获取这些信息呢?难道要用正则表达式来筛选吗?当然不是。

第三步、处理数据获取想要得到的数据,这里我们需要熟悉一个处理页面数据的npm包,cheerio,包的地址:

来看一下官网文档,看一下这个包的用法。代码如下:

怎么用nodejs写一个代理爬虫网站

打印结果如下:

怎么用nodejs写一个代理爬虫网站

从以上结果我们可以看出cheerio的作用就是将html结构的字符串转换成类似jquerydom对象的一种格式,然后用jquery的选择器筛选想要获得的数据,明白了以上用法,我们就可以继续往下进行了,处理数据,代码如下:

怎么用nodejs写一个代理爬虫网站

浏览器端发送求,在终端查看打印结果:

怎么用nodejs写一个代理爬虫网站

以上便得到了我们想要的数据,只有结果不是咱们最终结果,我们希望将数据渲染成页面返回给用户这里就用到了art-template。

第四步、用art-template将数据渲染成页面,代码如下:

怎么用nodejs写一个代理爬虫网站

模板代码如下:

怎么用nodejs写一个代理爬虫网站

注意列表在渲染的时候每一章的a标签链接的处理方式。

请求首页地址结果如下:

怎么用nodejs写一个代理爬虫网站

以上只是目录页的实现方式,接下来每一章的详情页,这里需要注意,详情页路由再设计的时候,我们设置了一个params的请求参数,通过这个参数,我们可以拼接处用户请求的是那一章的数据,从而去处理数据。代码如下:

怎么用nodejs写一个代理爬虫网站

代码地址如下: https://github.com/clm1100/spidertest

到此,关于“怎么用nodejs写一个代理爬虫网站”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI