nodeJS实现简单网页爬虫功能的实例(分享)
发布时间 - 2026-01-11 01:47:07 点击率:次本文将使用nodeJS实现一个简单的网页爬虫功能

网页源码
使用http.get()方法获取网页源码,以hao123网站的头条页面为例
http://tuijian.hao123.com/hotrank
var http = require('http');
http.get('http://tuijian.hao123.com/hotrank',function(res){
var data = '';
res.on('data',function(chunk){
data += chunk;
});
res.on('end',function(){
console.log(data);
})
});
获得的结果如下所示:
筛选数据
以网页中的综艺热点部分
相关源代码如下
通过分析可知,‘综艺’模块与其他模块都位于<div class="top-wrap">中,其中,综艺模块的内层div的monkey='zy',综艺模块的10条综艺节目的信息都位于<div class="poinr clearfix">中,综艺节目的名称位于<span class="point-title">中
cheerio
我们怎么从源代码中获取到有用的数据呢?首先,nodeJS不支持document对象。如果要使用笨办法,只能使用正则表达式来处理
cheerio 是nodejs特别为服务端定制的,能够快速灵活的对JQuery核心进行实现。它工作于DOM模型上,且解析、操作、呈送都很高效
【安装】
【使用】
它的使用方法和jQuery相当类似,上手非常容易。以获取综艺热度前10名的节目名称为例
var http = require('http');
var cheerio = require('cheerio');
http.get('http://tuijian.hao123.com/hotrank',function(res){
var data = '';
res.on('data',function(chunk){
data += chunk;
});
res.on('end',function(){
filter(data);
})
});
function filter(data){
//保存搜索量前10的综艺节目标题
var result = [];
//将页面源代码转换为$对象
var $ = cheerio.load(data);
//查找每个综艺节目标题的外层div
var temp_arr = $('[monkey = "zy"]').find('.point-bd').find('.point-title');
//将综艺节目标题依次保存到结果数组中
temp_arr.each(function(index,item){
result.push($(item).text());
})
//[ '变形计','来吧冠军','拜托了冰箱','昆仑决','天生是优我','姐姐好饿','脑力男人时代','奔跑吧兄弟','我想和你唱','玫瑰之旅' ]
console.log(result);
}
爬虫代码
下面将hao123网页中的'实时热点'、'今日热点'、'民生热点'、'电影'、'电视剧'、'综艺'这6部分的排名爬下来,分别到对象名为'result'中的数组中,分别命令为'ss'、'jr'、'ms'、'dy'、'dsj'、'zy'
【代码如下】
var http = require('http');
var cheerio = require('cheerio');
http.get('http://tuijian.hao123.com/hotrank',function(res){
var data = '';
res.on('data',function(chunk){
data += chunk;
});
res.on('end',function(){
filter(data);
})
});
function filter(data){
//保存各部分搜索量前10的名称
//对象名为榜单名,如'实时热点'
//对象内容为10个标题名称组成的数组
var result = {};
//将页面源代码转换为$对象
var $ = cheerio.load(data);
//查找'实时热点'、'今日热点'、'民生热点'、'电影'、'电视剧'、'综艺'这6个榜单所在的div
var temp_div = $('.top-wrap');
//保存榜单名称
var temp_title = [];
temp_div.each(function(index,item){
//查找榜单名,并保存到temp_title文件夹中
temp_title.push($(item).find('h2').text());
//查找每类下每个标题的外层div
var temp_arr = $(item).find('.point-bd').find('.point-title');
//将result下的每个榜单初始化为一个数组
var innerResult = result[temp_title[index]] = [];
//将节目标题依次保存到相应榜单的数组中
temp_arr.each(function(_index,_item){
innerResult.push($(_item).text())
})
})
console.log(result);
}
【结果如下】
以上这篇nodeJS实现简单网页爬虫功能的实例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# nodeJS实现网页爬虫
# 榜单
# 源代码
# 组中
# 给大家
# 为例
# 转换为
# 我想
# 和你
# 之旅
# 希望能
# 都很
# 不支持
# 所示
# 来吧
# 这篇
# 小编
# 要使
# 头条
# 服务端
# 大家多多
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何获取上海专业网站定制建站电话?
大型企业网站制作流程,做网站需要注册公司吗?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
使用spring连接及操作mongodb3.0实例
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在云服务器上快速搭建个人网站?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel如何配置和使用缓存?(Redis代码示例)
如何在腾讯云服务器快速搭建个人网站?
JavaScript如何实现路由_前端路由原理是什么
Laravel如何实现API版本控制_Laravel版本化API设计方案
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
郑州企业网站制作公司,郑州招聘网站有哪些?
Laravel如何优化应用性能?(缓存和优化命令)
如何确认建站备案号应放置的具体位置?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何用好域名打造高点击率的自主建站?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
如何在自有机房高效搭建专业网站?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何彻底删除建站之星生成的Banner?
zabbix利用python脚本发送报警邮件的方法
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
简单实现jsp分页
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
高性价比服务器租赁——企业级配置与24小时运维服务
HTML 中动态设置元素 name 属性的正确语法详解
香港网站服务器数量如何影响SEO优化效果?
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
详解vue.js组件化开发实践
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何快速登录WAP自助建站平台?
音响网站制作视频教程,隆霸音响官方网站?
nodejs redis 发布订阅机制封装实现方法及实例代码
详解Android——蓝牙技术 带你实现终端间数据传输
C语言设计一个闪闪的圣诞树
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程

