如何用nodejs构造一个网站爬虫

爬虫是个什么东西

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

                                                                                                                           

爬虫能做些什么

你肯定很熟悉股市,也许见到过一些收费网站把股市的变化显现到页面上,并提供收费的对比服务;金融行业的计算机大多是做这个的

他的工作原理就是爬虫收集网页内容,提取加工(比如加入某些线性代数)并重新渲染(可视化)到新的网页上,从而直观地进行预测,

你也许见识过曾经爆火的各种刷单刷屏论,注册多个账号的僵尸粉,

甚至是疫情期间的各个地区的疫情情况大地图,数据不尽相同的原因也是如此,(爬取了主网站,二次渲染数据)

亦或者是各种查询电影票的网站或者app(各种软件的本质在展现给用户的时候都是页面的形式)能准确获取当地电影开场时间票价剩余位置的原因都在这里

爬虫效果

比如这是一个电影网站

我想获取他的电影名,电影分数,电影海报(占用空间大,一般不用区分开)等

那么F12打开开发者控制台,检查我们想查看的部分源代码

得知网页代码中这部分对应这部分标签

继续展开代码标签,这时候我们就知道更具体的对应内容了,其他类似电影展示模块也是如此进行

我们会发现因为代码的严格,很多标签为了规范和后期重构维护都有重复的命名的习惯;

因此我们可以写一个爬虫函数,让它去获取这个页面这些指定的标签内容(可以通过截取数据,或者爬取数据,更高级点就截图识别),之后就交给我们开发小哥们去制作更好的内容吧😶‍🌫️

比如,在分数那里都是move-score命名的变量来存储分数;于是我们就可以利用这点,写一个函数,把这块内容给复制下来

关于node作为中间件解决跨域问题

据说很多大厂在java为后端搭建的程序在进行重构的时候,会采用node作为中间件作为后端;这是由于java所构建的程序多用于中大型程序,这时候改变代码的代价是很大的,所以基本不会对源代码进行修改,如果要加什么功能的话,最好的办法就是模块化添加功能,这符合前端模块化开发;而node本身在浏览器中就担任了小后端的角色,自然可以承担起中间件的角色

什么是跨域

跨域是指在Web浏览器中,一个网页的脚本代码(如JavaScript、Flash、Java等)向其他网站(域)的服务器发出请求,而非当前网页所在的服务器,这样的操作称之为跨域请求。它受到同源策略的限制,需要通过特殊的方法进行处理。

上面是ChatGPT的答案,就我自己的理解来讲,除了跨域这个名词你还需要知道同源策略是什么

什么是同源策略

同源策略是一种Web安全策略,用于限制从一个源加载的文档或脚本如何与来自另一个源的资源交互。它是浏览器实施的一种安全机制,可以防止恶意脚本从跨站点窃取数据、欺骗用户进行操作等安全问题。

举个栗子

我们都知道不论是我们电脑上的pc端软件还是移动端上的app,他都可以读取本地文件(更新游戏,分享小姐姐照片😀,),但是浏览器是做不到的,如果做到了,想想你盘里的小视频在没有被你允许的情况下被传到网上,或是把一个锁屏病毒下载到你的主机里🥲,别问我怎么知道的哈;

有的小伙伴这时候就说,博主,你这说的不准确吧,网页上能下病毒,app和软件里就不行吗🤔?

很棒的问题哈,大概是因为在以前软件还很少的时代,第一是我们还不需要考虑这点,第二是所有软件都经过了互联网筛选这一层屏障了,另外苹果app上线都需要审核,安卓app有利🤫有弊

实现代码

var http = require('http');
// 调用内置模块http
var https = require('https');
var url = require('url');
var cheerio = require('cheerio');
​
// 创建服务器
http.createServer((req, res) => {var urlobj = url.parse(req.url, true);// 内部url模块,url解析地址// console.log(urlobj.query.callback)res.writeHead(200, {'Content-Type': 'application/json;charset=utf-8',// cros头,允许数据访问,否认拦截数据,*表示所有网站都能访问,实际生产环境不用这个,类似百度微信api,外连接网站允许使用// https://blog.csdn.net/baijiafan/article/details/126501682'access-control-allow-origin': '*',// 跨域,前端使用反向代理,node使用的时候,提供了CORS跨域处理方案,即为请求头添加access-control-allow-origin});
​switch (urlobj.pathname) {case '/api/aaa':// 设置本地3000端口下的api/aaa路径能访问;其余的显示404httpget((data) => {res.end(spider(data));});break;defalut: res.end('404');}}).listen(3001);
​
// 请求了网站的什么???
function httpget(cb) {var data = '';https.get('https://i.maoyan.com/', (res) => {res.on('data', (chunk) => {data += chunk;});res.on('end', () => {console.log(data);cb(data);// response.end(data)});});
}
function spider(data) {// npm i cheerio//  安装个正则表达的包let $ = cheerio.load(data);let $moviewlist = $('.column.content');// console.log($moviewlist)let movies = [];// 这里设置空数组$moviewlist.each((index, value) => {movies.push({title: $(value).find('.title').text(),grade: $(value).find('.grade').text(),actor: $(value).find('.actor').text(),});});console.log(movies);return JSON.stringify(movies);
}
// 太久没前端了,竟然忘记怎么渲染,光想确实是没什么印象了
​

控制台效果

在网页上简单展示效果

有了这些数据以后我们可以自己写成接口用了,也减少不必要的sql语句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65996.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平板电脑能安装java_手机上能安装的应用,平板电脑上是不是都能安装

手机上能安装的应用,平板电脑上是不是都能安装以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 手机上能安装的应用,平板电脑上是不是都能安装 只要是同系统的一般都行…

元宇宙与脑机接口

今天有有幸,读到了几篇好文,有如醍醐灌顶,让人大开眼界与思维的同时,感受到极深的共鸣。特此动笔写写一些感悟,也是纪念这许久以来,少有的精神上的愉悦。 这几篇文,链接如下: 人类唯…

程序员熬过中年危机的八条建议

年关将至,最近发完今年最后一个版本,周末跟几位原同事小聚,侃谈人生,顺便谈到大家境况。有人顺利晋升,有人无望转岗,也有人面临续约淘汰。实际上,每个人都进入冲刺阶段,不管是谋生、…

转载……给新人程序员的八点建议

给新人程序员的八点建议 他结合自身经历,对许多刚踏入程序员行列的新人程序员,他给出了以下八点建议 …… 今 年已经是陈皓在程序员行业里的第十个年头了。总结这十年,毕业的头两年,陈皓在银行中昏昏沉沉中度过,“这…

职场7个建议 轻松抛弃同龄人

点击蓝字关注,回复“职级”获取知名互联网公司职级定义 昨天在IT东方会平台做了一场直播,很多朋友提了很多职场相关的问题,觉得有必须总结一下这些年一些职场习惯,希望这些建议可以启发到你。 那现在就开始吧,下面从「…

2017热点推荐:成功程序员的8个习惯

对成功的渴望或许是我们与生俱来写在基因里的一部分。成功会让人幸福,并且几乎每个人都在争取幸福。当我们感到幸福的时候,我们大脑中的化学物质会迸发积极的情感,激励我们获取更多的成功。 成功的职业生涯通常是指规定时间内,发布…

这8个习惯可以改变整个人生?

1、清晰地知道你今天的工作,不会迷茫磨时间; 早上的阳光真舒服啊,繁闹的街区空荡荡没有几个人,感觉自己平白无故地,比别人赚到了2个小时的自由时间。 2、有充沛的精力,帮你高效地完成计划; 早…

成年后,让我快速成长的50个人生建议

1、永远对任何人保留至少30%的神秘感。 对于刚认识的人更是如此,跟陌生人聊几个小时就把自己全盘托出的,不是单纯而是傻逼,你越主动越卑微,别人越看不起你。你越有分寸,越有界限感,别人越尊重你。不卑不亢…

对自己的全面检视,写在28周岁的人生规划

一、你的个人核心价值观是什么? 1)、我为什么活着? a.存在即合理:既然活着,就努力活着,活出样子来! b.活着的需求:马斯洛需求层次理论。 具体为:生理需求/安全需求/社交…

一份来自28岁.NET老程序员的自白

写在前面 很幸运,28岁的我头发还没有掉光,更幸运的是28岁的我开始了博客园的写作生活!这样的技术分享经历让我拓展了自己的朋友圈!有幸结识了像张善友张队(连续13年的微软MVP),大石头(NewLife团…

Semantic Text Matching for Long-Form Documents(长格式文档的语义文本匹配)笔记

ABSTRACT 1、大多数现有的语义文本匹配方法在此设置中取得的成功有限,因为它们无法从长格式文本中捕获和提取主要思想和主题。 2、提出了SMASH RNN,综合了来自不同文档结构级别的信息,包括段落、句子和单词。基于注意力的分层 RNN 导出每个文档结构级别…

有哪些科研人员看文献必用的软件?

你可曾因为在电脑上找不到某篇已读文献而急躁? 你可曾因为向手机、平板一篇篇传输文献而厌倦? 你可曾因为检索各网站找不到想要的论文而烦恼? 如果答案是: 有、是、甚至想砸电脑 !那今天推荐软件一定合您口味&#xff…

让ChatGPT告诉你如何学习SAP FICO模块的系统知识

文章目录 目录 文章目录 SAP FICO模块介绍 ChatGPT介绍 想要了解SAP系统的FICO模块,如何学习 学习FICO模块,有哪些步骤 学习FICO模块,需要哪些基础知识 学习FICO模块,有哪些注意事项 总结 SAP FICO模块介绍 FICO&#x…

光凭验证码就可以盗号!微信盗号新手段揭秘

 光凭验证码就可以盗号!微信盗号新手段揭秘 91.com移动互联网第一平台 时间:2014-06-30 [网站合作] 快速评论 分享到QQ好友新浪微博91娱乐 目前有一种新型盗号方式即骗取用户手机验证码来盗取用户微信QQ等帐号,从…

不用下载应用也能联调信息流广告?

在日常的投放当中,我们总会经常遇到需要联调广告来确认数据回传是否正常,因此在需要经历下载应用——安装——激活——注册——付费等一系列过程来进行每个事件的确认,单纯下载安装还可以,但是每次都需要付费的话,对我…

常见信息流广告有哪些展现形式

信息流广告指的是通过精准的用户标签定向,将广告内容嵌入到产品生态之中,做到不打扰用户的广告体验,激发用户对广告的主动性,促使其主动接受和分享。信息流广告与传统的展示广告在展现样式上最大的区别就在于传统的展示广告有固定…

什么是信息流?如何投放信息流广告?如何收费?

什么是信息流?如何投放信息流广告?如何收费?什么是信息流?如何投放信息流广告?如何收费?什么是信息流?如何投放信息流广告?如何收费? 随着互联网的发展,信息时代已经到来,信息流广告逐渐得到众多广告主的青睐。 进行广告投放,不仅需要投入大量的精力,还要投入一…

信息流广告投放的技巧

随着互联网的发展,信息时代已经到来,信息流广告逐渐受到众多广告主的青睐。 做广告,不仅需要投入大量的精力,还需要一定的资金,花这么多,自然是要收获不错的收益。广告主在广告信息流的时候都追求高ROI&am…

网络文化与伦理【0948】

1、网络伦理规约的具体原则有哪些? 2、简述网络文化霸权带来的伦理问题及其对策。 3、学校网络道德教育的基本途径有哪些? 随着网络的普及,网恋已越来越成为一种普遍的现象,人们对网恋的态度也褒贬不一。然而,网络是…

IT伦理与道德

1.个人隐私问题 个人隐私包括传统的个人隐私和现代个人数据。传统的个人隐私有姓名,出生年月,身份证编号,婚姻家庭,教育等。现代个人数据有用户名和密码,IP地址等。合理合法的隐私应受到保护。在计算机时代&#xff0c…