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爬虫文件循环 ...
随机推荐
- oracle 索引失效原因及解决方法
oracle 索引失效原因及解决方法 2010年11月26日 星期五 17:10 一.以下的方法会引起索引失效 1,<>2,单独的>,<,(有时会用到,有时不会)3,like ...
- Android是如何绘制View的
当一个activity获得焦点时, 它会被要求绘制它的布局. Android框架将处理绘制的过程, 但是activity必须提供它的布局体系的根节点. 绘制将从根节点开始, 根节点被要求测量和绘制布局 ...
- Android布局_表格布局TableLayout
一.TableLayout概述 TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象 二.TableLayout的全局属性 1 ...
- php imagecreatetruecolor输出字符符或验证码
$img = imagecreatetruecolor(100,100); //创建真彩图像资源 $color = imagecolorAllocate($img,200,200,200); //分配 ...
- 部署git服务器 gitServer 软件
部署git服务器 gitServer 软件 搭建git服务器也并不是非常的难,有这么多优秀的软件,选择一个适合自己就行了 1. windows版本 http://gitstack.com/ 免费版本, ...
- dedecms5.7怎么取消邮箱验证以及dedecms 会员发布的文章不需要审核的解决方法
后台 ——系统基本参数——会员设置——会员权限开通状态——改为0 1.实现会员发布文章不需要审核,非会员发布需要审核 在member这个文件夹下找到archives_sg_add.php这个文件,打开 ...
- IoC 之 2.2 IoC 容器基本原理(贰)
2.2.1 IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IoC ...
- 扩展Date的format方法--格式化日期时间
Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, "d+& ...
- WPF:linq
/// <summary> /// 该药品是否存在发药信息 /// 存在返回true,否则返回false /// </summary> /// <param name=& ...
- hdu1710(Binary Tree Traversals)(二叉树遍历)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...