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爬虫文件循环 ...
随机推荐
- Java中List的使用
package ch8; import java.util.*; /** * Created by Jiqing on 2016/11/27. */ public class ListTest { p ...
- C/C++中static关键字作用总结
来来来,来看这篇文章: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html 总结一下: 1.先来介绍它的第一条也是最重 ...
- JavaScript设计模式-单例模式、模块模式(转载 学习中。。。。)
(转载地址:http://technicolor.iteye.com/blog/1409656) 之前在<JavaScript小特性-面向对象>里面介绍过JavaScript面向对象的特性 ...
- netbeans for php常用快捷键
文本编辑 复制当前行到上一行/下一行ctl+shf+up 移动当前行到上一行/下一行shf+alt+left/right/down/up 删除当前行ctl+E 生成下一行shf+enter(回车) 大 ...
- C语言 常用单词
main 主要的 printf(print format)格式输出 include , return ,if ,else ,switch ,case 机箱:案 ...
- 在Eclipse中设置Java类上面的注释(包含作者、日期等)
希望在Eclipse中,让Java类上面的注释像下面这样,改如何设置呢? 在Eclipse中,点击菜单中的Window-->Preferences,打开如下窗口:
- 【bzoj1047】理想的正方形
[bzoj1047]理想的正方形 题意 给定\(a*b\)由整数组成的矩形. 现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值 的差最小. \(1\leq a,b\leq 10 ...
- robotframework笔记24
侦听器接口 机器人框架有一个侦听器接口,可以用于接收 对测试执行通知. 示例用法包括 外部测试监控,测试失败时发送邮件消息, 与其他系统进行通信. 侦听器API版本3也使得 它可以修改测试在测试执行和 ...
- JavaScript:闭包
根据MDN上的解释『闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境.』 闭包有两个主要的作用: 1.访问内部函数的局域变量: 2.将创建的变量永久保存在内存中, ...
- Python--关于set
慕课网<Pyrhon入门>学习笔记 1.set 特性 set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像. 可以将s ...