热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nodejs实现爬虫

由于一些原因,我们想要获取某个网站的数据。我们可以通过nodejs爬虫拿到我们希望的数据。要完成一个爬虫,主要的步骤分为:抓取爬虫

  由于一些原因,我们想要获取某个网站的数据。我们可以通过nodejs爬虫拿到我们希望的数据。要完成一个爬虫,主要的步骤分为:

抓取

  爬虫,最重要的步骤就是如何把想要的页面抓取回来。并且能够兼顾时间效率,能够并发的爬取多个页面。想要获取目标内容,需要我们分析页面结构。

  1、使用nodejs的request模块,获取目标页面的html代码。

  2、使用cheerio模块对html模块做处理,拿到需要的数据。

存储

  获取到有价值的数据后,为了方便我们的使用可以把数据保存下。可以转换成json文件或者直接存入数据库。

具体实现

1、初始化一个项目:

$ npm init

2、安装依赖模块:

$ npm install express request cheerio --save

express用来搭建node服务;

request类似于ajax的方式获取一个url里面的html代码;

cheerio类似于jquery那样对所获取的html代码进行处理。

3、根目录创建一个spider.js

var express = require('express'),app = express(),request = require('request'),cheerio = require('cheerio'), fs = require('fs');var fetchData = [];
function fetchBrand(){ request('http://waimai.baidu.com/waimai/shop/1434741117', function(err, res, body) {if (err || res.statusCode != 200) {console.log(err);console.log('爬取失败'); return false;} var $ = cheerio.load(body, { decodeEntities: false });//解决了乱码的问题var curBrands = $('.list-wrap');for(var i = 0;i var obj = {name: curBrands.eq(i).find('.list-status .title').text(), sub: []} fetchData.push(obj);var curSeries = curBrands.eq(i).find('.list-item');for (var j = 0;j var obj = {imgpath:curSeries.eq(j).find('.bg-img').attr('style').substring(curSeries.eq(j).find('.bg-img').attr('style').indexOf('http'), curSeries.eq(j).find('.bg-img').attr('style').indexOf(')')),name: curSeries.eq(j).find('h3').text(), recommend: curSeries.eq(j).find('.divider').prev().text(),sale: curSeries.eq(j).find('.divider').next().text(),stock: curSeries.eq(j).find('.stock-count').text(),saPrice: curSeries.eq(j).find('span strong').text(),orPrice: curSeries.eq(j).find('del strong').text()}fetchData[fetchData.length - 1].sub.push(obj); } }var t = JSON.stringify(fetchData);fs.writeFileSync('baiduData.json', t);})
}fetchBrand();

4、运行spider.js文件

$ node spider.js

  控制台会输出抓取成功。这个时候你会发现文件夹里多了一个名为baiduData.json的json文件。



推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • 利用 Python 实现 Facebook 账号登录功能 ... [详细]
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • 在Java中,匿名函数作为一种无名的函数结构,无法独立调用;而在JavaScript中,不仅有类似的匿名函数,还有立即执行函数(IIFE)和闭包等高级特性。立即执行函数同样基于匿名函数实现,但会在定义时立即执行,而闭包则通过嵌套函数来捕获外部变量,实现数据封装和持久化。这些不同的函数形式在实际开发中各有应用场景,理解其特点有助于更好地利用语言特性进行编程。 ... [详细]
  • 深入解析:JavaScript中的表达式与语句有何不同
    深入解析:JavaScript中的表达式与语句有何不同 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 根据不同环境需求,利用 Vue CLI 的 `npm run build` 命令对项目进行定制化打包,如测试、预发布和生产环境。通过配置 `process.env` 变量,实现不同环境下接口和服务的动态切换,确保应用在各阶段都能高效运行和调试。 ... [详细]
  • 如何在PHP中实现链接输出与字符串连接的操作技巧 ... [详细]
  • 在Python 3环境中,当无法连接互联网时,可以通过下载离线模块包来实现模块的安装。具体步骤包括:首先从PyPI网站下载所需的模块包,然后将其传输到目标环境,并使用`pip install`命令进行本地安装。此方法不仅适用于单个模块,还支持依赖项的批量安装,确保开发环境的完整性和一致性。 ... [详细]
  • 初次接触AJAX是在去年,当时主要是通过手动编写客户端代码来实现,还需处理被请求的页面,过程相当繁琐。尽管之前就听说过AJAX.NET,但一直没有机会深入了解。本文将作为初学者的指南,详细介绍AJAX.NET的基本概念、核心功能及其在实际项目中的应用技巧,帮助读者快速上手并掌握这一强大的开发工具。 ... [详细]
  • 本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
author-avatar
Jason子宣_805
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有