// 引入https模块,由于我们爬取的网站采用的是https协议
const https = require('https');
// 引入cheerio模块,使用这个模块可以将爬取的网页源代码进行装载,然后使用类似jquery的语法去操作这些元素
// 在cheerio不是内置模块,需要使用包管理器下载安装
const cheerio = require('cheerio');
// 这里以爬取拉钩网为例
var url = "https://www.lagou.com/";
// 使用https模块中的get方法,获取指定url中的网页源代码
https.get(url, function (res) {
var html = '';
// 每当我们从指定的url中得到数据的时候,就会触发res的data事件,事件中的chunk是每次得到的数据,data事件会触发多次,因为一个网页的源代码并不是一次性就可以下完的
res.on("data", function (chunk) {
html += chunk;
});
// 当网页的源代码下载完成后, 就会触发end事件
res.on("end", function () {
//这里我们对下载的源代码进行一些处理
doSomeThing(html); });
});
function doSomeThing(html) {
// 使用cheerio模块装载我们得到的页面源代码,返回的是一个类似于jquery中的$对象
var $ = cheerio.load(html);
//使用这个$对象就像操作jquery对象一般去操作我们获取得到的页面的源代码
var $menu_box = $(".menu_box");
// 将我们需要的文字信息存储在一个数组中
var result = [];
$menu_box.each(function (i, item) {
var obj = {};
var h2 = $(item).find("h2").text().trim();
obj.name = h2;
var $as = $(item).find("a");
obj.subName = [];
$as.each(function (i, item) {
obj.subName.push($(item).text());
});
result.push(obj);
});
//最后我们输出这个结果
console.log(result);
}
// 引入https模块,由于我们爬取的网站采用的是https协议
const https = require('https');
// 引入cheerio模块,使用这个模块可以将爬取的网页源代码进行装载,然后使用类似jquery的语法去操作这些元素
// 在cheerio不是内置模块,需要使用包管理器下载安装
const cheerio = require('cheerio');
// 这里以爬取拉钩网为例
var url = "https://www.lagou.com/";
// 使用https模块中的get方法,获取指定url中的网页源代码
https.get(url, function (res) {
var html = '';
// 每当我们从指定的url中得到数据的时候,就会触发res的data事件,事件中的chunk是每次得到的数据,data事件会触发多次,因为一个网页的源代码并不是一次性就可以下完的
res.on("data", function (chunk) {
html += chunk;
});
// 当网页的源代码下载完成后, 就会触发end事件
res.on("end", function () {
//这里我们对下载的源代码进行一些处理
doSomeThing(html);
});
});
function doSomeThing(html) {
// 使用cheerio模块装载我们得到的页面源代码,返回的是一个类似于jquery中的$对象
var $ = cheerio.load(html);
//使用这个$对象就像操作jquery对象一般去操作我们获取得到的页面的源代码
var $menu_box = $(".menu_box");
// 将我们需要的文字信息存储在一个数组中
var result = [];
$menu_box.each(function (i, item) {
var obj = {};
var h2 = $(item).find("h2").text().trim();
obj.name = h2;
var $as = $(item).find("a");
obj.subName = [];
$as.each(function (i, item) {
obj.subName.push($(item).text());
});
result.push(obj);
});
//最后我们输出这个结果
console.log(result);
}

nodejs实现网站数据的爬取的更多相关文章

  1. Python_记一次网站数据定向爬取实现

    记一次网站数据定向爬取实现 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.4 Win7 请勿用于商业及非法用途,仅供学习研究用,否则后果自负 数据爬取场景 如 ...

  2. 中国农产品信息网站scrapy-redis分布式爬取数据

    ---恢复内容开始--- 基于scrapy_redis和mongodb的分布式爬虫 项目需求: 1:自动抓取每一个农产品的详细数据 2:对抓取的数据进行存储 第一步: 创建scrapy项目 创建爬虫文 ...

  3. Ajax数据的爬取(淘女郎为例)

    mmtao Ajax数据的爬取(淘女郎为例) 如有疑问,转到 Wiki 淘女郎模特抓取教程 网址:https://0x9.me/xrh6z 判断一个页面是不是 Ajax 加载的方法: 查看网页源代码, ...

  4. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  5. 爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取阅读量: 1203 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/ ...

  6. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

    CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...

  7. (五)selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取 一 图片懒加载 自己理解------就是在打开一个页面的时候,图片数量特别多,图片加载会增加服务器的压力,所以我们在这个时候,就会用到- ...

  8. 爬虫--selenuim和phantonJs处理网页动态加载数据的爬取

    1.谷歌浏览器的使用 下载谷歌浏览器 安装谷歌访问助手 终于用上谷歌浏览器了.....激动 问题:处理页面动态加载数据的爬取 -1.selenium -2.phantomJs 1.selenium 二 ...

  9. 基于nodejs模拟浏览器post请求爬取json数据

    今天想爬取某网站的后台传来的数据,中间遇到了很多阻碍,花了2个小时才请求到数据,所以我在此总结了一些经验. 首先,放上我所爬取的请求地址http://api.chuchujie.com/api/?v= ...

随机推荐

  1. E20180406-hm

    dressing n. 穿衣; 调味品; 肥料 dress n. 衣服; 礼服; 连衣裙; 装饰; vt. 打扮; 穿着; 给…穿衣; monde  n. 时髦社交界,上流社会; ingredient ...

  2. 枚举与#define 宏的区别

    1),#define 宏常量是在预编译阶段进行简单替换.枚举常量则是在编译的时候确定其值.2),一般在编译器里,可以调试枚举常量,但是不能调试宏常量.3),枚举可以一次定义大量相关的常量,而#defi ...

  3. Educational Codeforces Round 21 D - Array Division (前缀和+二分)

    传送门 题意 将n个数划分为两块,最多改变一个数的位置, 问能否使两块和相等 分析 因为我们最多只能移动一个数x,那么要么将该数往前移动,要么往后移动,一开始处理不需要移动的情况 那么遍历sum[i] ...

  4. Codeforces 711B 【模拟】

    比赛的时候绝壁打麻烦了... 考虑的好麻烦...wa7...还要判断出来的是不是positive的... 好吧..认了.. #include<cstdio> #include <ma ...

  5. IDEA thymeleaf ${xxx.xxx}表达式报错,红色波浪线

    解决方法: 在<!DOCTYPE html>标签下面加上 <!--suppress ALL--> 代码如图: 不再报错,效果如下图:

  6. C++构造函数与析构函数的解析

    创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值. 注意,类的数据成员是不能在声明类时初始化的.如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化.如: clas ...

  7. Python之单元测试——HTMLTestRunner

    前置条件:把HTMLTestRunner.py文件拷贝到External Libraries—>site-packages里面 import unittestimport HTMLTestRun ...

  8. python实现判断素数

    import math def is_prime_1(n): if n <= 1: return False for i in range(2, int(math.sqrt(n) + 1)): ...

  9. 【转载】(0, eval)(‘this’)

    var window = this || (0, eval)('this') 在avalon源码中有这么一行代码,var window = this很容易理解 这里复习一下Global Object: ...

  10. 17972 Golden gun的巧克力

    17972 Golden gun的巧克力 时间限制:1000MS  内存限制:65535K提交次数:93 通过次数:13 收入:124 题型: 编程题   语言: G++;GCC;JAVA Descr ...