NodeJs编写小爬虫
一,爬虫及Robots协议
爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。
robots.txt是一个文本文件,robots是一个协议,而不是一个命令。robots.txt是爬虫要查看的第一个文件。robots.txt文件告诉爬虫在服务器上什么文件是可以被查看的,搜索机器人就会按照该文件中的内容来确定访问的范围。
如上图,我们可以在网站中直接访问robots.txt文件查看网站禁止访问和允许访问的文件。
二,使用NodeJs爬去网页需要安装的模块
Express
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
中文API:http://www.expressjs.com.cn/
Request
简化了http请求。
API:https://www.npmjs.com/package/request
Cheerio
以一种类似JQ的方式处理爬取到的网页。
API:https://www.npmjs.com/package/cheerio
这三个模块在安装NodeJs 之后,可以使用npm命令进行安装。
三,简单爬取网页示例
var express = require('express');
var app = express();
var request = require('request');
var cheerio = require('cheerio');
app.get('/', function(req, res){
request('http://blog.csdn.net/lhc1105', function (error, response, body) {
if (!error && response.statusCode == 200) {
$ = cheerio.load(body);//当前的$,它是拿到了整个body的前端选择器
console.log($('.user_name').text()); //我博客的获取用户名
}else{
console.log("思密达,没爬取到用户名,再来一次");
}
})
});
app.listen(3000);
之后,
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAa4AAABvCAIAAAA7VLNoAAAFeUlEQVR4nO3cMY7bRhQG4HeMnMrYnCXIPVIEMBDkFClcb+nSlQsXvoJ9hBROBIGceXwzJGVp9X2FoR0NHx+5w9/clbTx/fv3b9++ff369cuXL58/f/706dPHjx9/+fB3ADwPUQggCgFEIUCIQoAQhQAhCgFCFAKEKAQIUQgQohAgRCFAiEKAuHkUvr6+3myrk8rWt1rPPOlAgL3uNgqvZ/Ye7+zkh+vH14q9DU0ThXCnDozCzeu8mTjJVpen1g8qZZt7ae53NLNGo3Cz/0o14ER5FBbvki7yXJu+SxoNi8r8YhQWc3Z9dM36vcaaDSwq1L8LdUn/lSYfzhnn8FH2zoYkCvOwaNq81BcR05s8mjvFNnpzmklUrFkZ3+y/WWSdhs0d9fZen3/GzHrBW6ZDZeWc148ovGu3icLFnNFr7/rfnW00I6kStUNReF2hchoPj8Kh+aMhO9TG7QvudG/9cCO9KNxcEL1E24yhfPNmqWasVDbcOWdzkyTahqIwKT567JV9Tc+cm3/LavvdWz/cyG2iMJlcuVEavTmabn60bHIGFkG22dhQFL5eWWzSfKo3P9l1cZPLhM1+9vfZbGOxyfrBenKlTq+f9b5GW63sl59gOgp7mt/szU3Wq62+i7kJzfW9uTQX10kyYXPzzacWpXqVp8d7I5vz1/Wbp+XwPnsNJP1sHuxcP/kuEsn6GarD8SpRmERDUy8F6olTKTg9/zpZJpZjc8NkWv3A82ty8xKduKSLE9Yql/ThfSY9JOPTh59sOLogjy3CKYp3hUPftubk+sKtG2pg8ewiXyobDk0bOgnNZxfX5J6Iyc9bcyQ5yflJO6/PZifrycX2Kv33+imuk2bDiy/rB8u5jn0FOZnfq7BZ+bV2F1as2bwg14t+s0Kx7Xpjza4WHTaLjI6PdrUnSo7tM7dZv7eXiX6OisJDanKM6Sis5EU+ko+vn62vlcrMY6Pq7PqjUViZ3xtJvqwc1Hl91vebxFk+Uuyndx72rB9R+JMVP22y3vAGUVhcx3Wb+82XY/2g5urH6nruXTnJQV0Gr5/tzW921TtpvW2bOzqjz96um30mO93Tz2aRzZ4r/fATnPfnGPKFmC+CZHEctW56i7vZ2EQ/9cGJOfu9bmXc47q3w3nDp/pNuWUUFqcV82LnqipuPt3P/Udh8l/R47rDg3qrp/qt8adbAUQhgCgECFEIEKIQIApReNQ7V5ovoiUvruWTF89O1I/C233mxoHHk3/apBcuQ7tYV8jHe3NG6+T1m4dWqdObDzywibvCs6MwT6j14HSd5ECS+pXNgQcjCptEITyX6Shs/oyZjCcFF+N7IqxSf3Tm65XKOPB45qKwd9O0eTNVSZ+j7uY2x+tROPQYeDz7f0Du3c2tTUTP5pcT9fPxo44CeCQ3i8Lpn1uLUTiRUKIQ+M9tonDPfVklCufiqViqeLyiEB7YgVHYezwRJUm8HhhVE1FYeQw8nspbrH/4MT//Mh/pbbve5PLsuuFmVI3Wz/fb3Gmzn9448GB8BhlAFAKIQoAQhQAhCgFCFAKEKAQIUQgQohAgRCFAiEKAEIUAIQoBQhQChCgECFEIEKIQIEQhQIhCgBCFACEKAUIUAoQoBAhRCBCiECBEIUCIQoAQhQAhCgFCFAKEKAQIUQgQohAgRCFAiEKAEIUAIQoB4v8o/OvXiJf3ohB4Upe7wvcvL3+KQuA5XaLww++/i0LgSYlCgOsofPntH1EIPKWrV5Dfv4t3f4hC4Am5KwTwu0IAUQgQ3lcIED5tAhA+gwwQohAgRCFAiEKA8LIJQHgzDUB4izVAiEKA8OcYAMIf6QIId4UA4XeFACEKAcL7CgHCp00AwmeQAUIUAoQoBIj4F+v7wUHgANP3AAAAAElFTkSuQmCC" alt="" border="0" />
然后在浏览器中访问:http://localhost:3000/,就能看到输出的用户名。
感觉比python爬取方便点儿,主要是对网页元素解析上,省去了很多正则表达式。
by the way ,新年快乐~~~
NodeJs编写小爬虫的更多相关文章
- nodejs http小爬虫
本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...
- nodejs .http模块, cheerio模块 实现 小爬虫.
代码: var http = require("http"); var cheerio = require("cheerio"); var url = 'htt ...
- Java豆瓣电影爬虫——小爬虫成长记(附源码)
以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候, ...
- 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)
放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...
- 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- nodejs的简单爬虫
闲聊 好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻...... 小颖最近养了条泰日天,自从养了我家 ...
- Python爬虫01——第一个小爬虫
Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...
- node.js 开发简易的小爬虫
node.js 开发简易的小爬虫 最近公司开发一款医药类的软件,所以需要一些药品的基础数据,所以本人就用node.js写一个简易的小爬虫,并写记录这个Demo以供大家参考. 一.开发前的准备: 1, ...
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...
随机推荐
- curl的简单使用
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { ...
- Python中的__new__()方法的使用
__new__() 函数只能用于从object继承的新式类. 先看下object类中对__new__()方法的定义: class object: @staticmethod # known cas ...
- 读convolutional Neural Networks Applied to House Numbers Digit Classification 的收获。
本文以下内容来自读论文以后认为有价值的地方,论文来自:convolutional Neural Networks Applied to House Numbers Digit Classificati ...
- JavaWeb 8 Cookie
JavaWeb 8 Cookie 2. 会话管理入门 2.1 生活中会话 我: 小张,你会跳小苹果码? 小张: 会,怎么了? ...
- unicode 和 utf-8 的关系和解释
首先一个字节就是8个晶体管同时发出的信号集, unicode就是一套编码,所有的字符都用2个字节表示,不像gbk和gb2312既保持了以前的ansi/ascii的字符单个字节编码,有发明了两个字节保存 ...
- OOAD与UML笔记
UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素.构建模块.分析过程并可通过文档说明系统中的重要细节 2.OOAD OO ...
- 日期操作类--Date类
Date-API ava.util包提供了Date类来封装当前的日期和时间.Date类提供两个构造函数来实例化Date对象.第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函 ...
- 2.2 利用项目模板创建ASP.NET MVC项目
1.启动VS2012,点击“文件|新建|项目”. 2.在新建项目的窗口中,选择ASP.NET MVC 4应用程序. 3.在新ASP.NET MVC 4项目窗口中的“选择模板”列表中选择“基本”模板,在 ...
- saiku-添加数据源以及保证数据源的一致性
采用任何一种添加数据源的方式都不能保证数据源的一致和完整,所以需要两种结合来管理数据源 1.通过saiku的管理台添加数据源 ① 第一种方式:schema和ds都在管理台添加 1)上传schema文件 ...
- 正确理解Spring AOP中的Around advice
Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...