一,爬虫及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编写小爬虫的更多相关文章

  1. nodejs http小爬虫

    本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...

  2. nodejs .http模块, cheerio模块 实现 小爬虫.

    代码: var http = require("http"); var cheerio = require("cheerio"); var url = 'htt ...

  3. Java豆瓣电影爬虫——小爬虫成长记(附源码)

    以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候, ...

  4. 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

    放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...

  5. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  6. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  7. Python爬虫01——第一个小爬虫

    Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

  8. node.js 开发简易的小爬虫

    node.js  开发简易的小爬虫 最近公司开发一款医药类的软件,所以需要一些药品的基础数据,所以本人就用node.js写一个简易的小爬虫,并写记录这个Demo以供大家参考. 一.开发前的准备: 1, ...

  9. 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器

    第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...

随机推荐

  1. xml配置文件详解

    1:bean的基本属性配置: <!-- id是bean的标识符,必须唯一,如果没有配置id,name默认为标识符 如果配置了id,有配置了name,那么name为别名 name可以设置多个别名, ...

  2. C++中的虚函数与纯虚函数

    这个吧,我也不怎么知道,所以,大家来看这两篇文章哦: http://blog.csdn.net/hackbuteer1/article/details/7558868 http://blog.csdn ...

  3. 转:C的|、||、&、&&、异或、~、!运算

    转自:C的|.||.&.&&.异或.~.!运算 位运算     位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位 ...

  4. 转:Unicode汉字编码表

    转自:http://blog.csdn.net/huangxy10/article/details/10012119 Unicode汉字编码表 1 Unicode编码表  Unicode只有一个字符集 ...

  5. Bootstrap强调内容

    在实际项目中,对于一些重要的文本,希望突出强调的部分都会做另外的样式处理.Bootstrap同样对这部分做了一些轻量级的处理. 如果想让一个段落p突出显示,可以通过添加类名“.lead”实现,其作用就 ...

  6. GATK原理及流程

    用GATK跑了很久的流程,但还是不知道它的原理,现在项目要深入,没有流程可用,一切都要手动,所以必须开始着手了解GATK运行的原理,必须要知道需要输入什么,基本的算法,输出是什么. 参见: GATK使 ...

  7. 串行通讯之UARTLoopback

    目录 第1章串行通讯之UARTLoopback    2 1 USB转串口    2 2 USB Accessory    2 3 连入手机    3 4 代码改进    4 5 打开串口    4 ...

  8. MySQL redo lock 死锁问题排查 & 解决过程

    版权声明:本文由张青林原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/181 来源:腾云阁 https://www.qclo ...

  9. 【转】 Linux 线程同步的三种方法

    线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点.linux下提供了多种方式来处理线程同步,最常用的是互斥锁.条件变量和信号量. 一.互斥锁(mutex) 通过锁机制实现线程间的 ...

  10. C#程序以管理员权限运行【我采用了第二种,比较好用】

    在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...