node.js自带的http模块是异步获取网页内容的,不过我们可以到npm上去搜索同步的http模块。sync-request就是其中一种。

首先,安装sync-request包:

npm install sync-request

它的使用方法是:

var request = require('sync-request');
var html = request(method, url, options).getBody().toString();

然后我们需要一个解析html树的工具。jsdom可以用,但是它实在是太大,我们可以用cheerio,它提供了类似jquery的api,更加便捷。

npm install cheerio

之后:

var cheerio = require('cheerio');
var $ = cheerio.load(html);

下面是抓取菜鸟教程(runoob.com)单部教程的一个例子:

var cheerio = require('cheerio');
var request = require('sync-request');
var fs = require('fs');var ofile = fs.openSync('out.html', 'w');var url = 'http://www.runoob.com/html/html-tutorial.html';
var html = request('GET', url).getBody().toString();var toc = getToc(html);
for(var i in toc) {var url = toc[i];console.log('page: ' + url);html = request('GET', url).getBody().toString();var content = getContent(html);fs.writeSync(ofile, content, null, 'utf-8');
}fs.closeSync(ofile);
console.log('Done..');function getToc(html)  {var $ = cheerio.load(html);var $list = $('#leftcolumn').find('a');var res = [];for(var i = 0; i < $list.length; i++){var url = $list.eq(i).attr('href');res.push('http://www.runoob.com/' + url);}return res;
}function getContent(html) {var $ = cheerio.load(html);var content = $('#content').html();return content;
}

使用sync-request和cheerio写爬虫相关推荐

  1. js foreach用法_使用 nodejs 写爬虫(一): 常用模块和 js 语法

    本篇是使用 nodejs 写爬虫系列教程的第一篇, 介绍了使用 nodejs 写爬虫过程中常用的模块和一些必须掌握的 js 语法 <!-- more --> 常用模块 常用模块有以下几个: ...

  2. html可以编写爬虫吗,JavaScript能写爬虫吗?

    网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.那么JavaScript能写爬虫吗?下面本篇文章就来给大家介绍一下. 爬虫,大多人对于爬虫的理解都停 ...

  3. php和python写爬虫-为什么选择用python做爬虫

    什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当 ...

  4. 编程语言python入门-手把手教你从零开始用Python语言写爬虫程序

    简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前.如果我们把互联网比作 ...

  5. Python3---站在大佬肩膀写爬虫-爬取网易云音乐热歌榜歌曲热评(精彩评论)

    和我一起加入CSDN----程序猿和攻城狮的社区 网易云音乐是我比较喜欢的一个音乐平台,对于特别热爱听歌的人来说,网易云音乐精准的音乐定位和独特歌曲推荐,让人使用起来很舒服.所谓:自古评论出人才,精彩 ...

  6. python 写爬虫 美女照片(一)

    无意中可看到一个爬取煎蛋网的美女照片 博客,感觉很有趣,就仿照写了个,还几个 一.安装必要的库 1.1 beautifulsoup pip install beautifulsoup4 1.2 pip ...

  7. 用scrapy写爬虫(一)快速上手

    写在前面 用python写爬虫的人很多,python的爬虫框架也很多,诸如pyspider 和 scrapy,笔者还是笔记倾向于scrapy,本文就用python写一个小爬虫demo. 本文适用于有一 ...

  8. Nodejs学习笔记(十一)--- 数据采集器示例(request和cheerio)

    目录 写在之前 示例 示例要求 采集器 加入代理 请求https 写在之后... 写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则 ...

  9. Nodejs学习笔记(十一)—数据采集器示例(request和cheerio)

    写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则解析数据比较繁琐些,总体来说没啥不好的,就是效率要差一些, 用nodejs写采集程 ...

最新文章

  1. 在C#中使用SerialPort类实现串口通信
  2. NineImageForCircleFriends朋友圈九宫格
  3. python 类属性和对象属性--定义和作用域
  4. 开源圆桌 QA 集锦
  5. linux 硬盘报错日志,Linux内核I_O系统报错日志与硬盘故障对应关系
  6. linux 查看zookeepr所在路径,Linux系统:Centos7下搭建ZooKeeper3.4中间件,常用命令总结...
  7. org.apache.catalina.LifecycleException: Failed to
  8. java中ArrayList用法详解,基本用法(含增删改查)
  9. 417.太平洋大西洋水流问题(力扣leetcode) 博主可答疑该问题
  10. 台式计算机组装攻略,台式机如何组装 电脑组装详细步骤【图文】
  11. Java实现建行聚合支付对接及其回调
  12. 群英荟萃 | UINO优锘科技ThingJS平台亮相华为开发者大会
  13. 用html5画瀑布图,漂亮的Excel瀑布图,竟然如此简单~~
  14. 使用switchshow/supportshow命令确认Brocade交换机型号(转载)
  15. Java生成并合并图片以及base64转图片
  16. 扫雷游戏软件测试,软件测试
  17. linux 软盘启动程序,Linux 引导过程及原理-从软盘启动GRUB
  18. kafka partition java,kafka中partition数量与消费者对应关系以及Java实践
  19. rm -rf / 好屌!
  20. the specified license key not be verified as belonging to this host

热门文章

  1. (37)FPGA面试技能提升篇(IUS仿真工具)
  2. ureport2 mysql_Ureport2 安装,配置及问题详解
  3. QCostomPlot 示例注解 2
  4. STM32F103_步进电机
  5. 第六章——并行接口技术
  6. Python天气预报查询
  7. linux 列表看多个文件数量,查看linux默认能最多开启多少个文件数量
  8. mypow等于1什么意思c语言,C语言基础练习题总结
  9. 大一大学计算机课后答案,南昌大学计算机作业答案(大一)
  10. oracle JOB 查询 添加 修改 删除