【原】小玩node+express爬蟲-1

最近開始從新學習node.js,以前學的都忘了。因此準備從新學一下,那麼,先從一個簡單的爬蟲開始吧。html

什麼是爬蟲

百度百科的解釋:node

爬蟲即網絡爬蟲,是一種自動獲取網頁內容的程序。是搜索引擎的重要組成部分,所以搜索引擎優化很大程度上就是針對爬蟲而作出的優化。jquery

通俗一點講:git

把別人網站的信息給弄下來,弄到本身的電腦上。而後再作一些過濾,好比篩選啊,排序啊,提取圖片啊,連接什麼的。獲取你須要的信息。github

若是數據量很大,並且你的算法又比較叼,而且能夠給別人檢索服務的話,那麼你的爬蟲就是一個小百度或者小谷歌了算法

什麼是robots協議

   瞭解完什麼是爬蟲以後,咱們再來了解一下爬蟲的協議了,也就是哪些東西才已去爬。express

    Robots協議(也稱爲爬蟲協議、機器人協議等)的全稱是「網絡爬蟲排除標準」(Robots Exclusion Protocol),網站經過Robots協議告訴搜索引擎哪些頁面能夠抓取,哪些頁面不能抓取。 npm

   robots.txt文件是一個文本文件,它是一個協議,而不是一個命令。它是搜索引擎中訪問網站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務器上什麼文件是能夠被查看的。小程序

    當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,若是存在,搜索機器人就會按照該文件中的內容來肯定訪問的範圍;瀏覽器

若是該文件不存在,全部的搜索蜘蛛將可以訪問網站上全部沒有被口令保護的頁面。百度官方建議,僅當您的網站包含不但願被搜索引擎收錄的內容時,才須要使用robots.txt文件。若是您但願搜索引擎收錄網站上全部內容,請勿創建robots.txt文件。

    若是將網站視爲酒店裏的一個房間,robots.txt就是主人在房間門口懸掛的「請勿打擾」或「歡迎打掃」的提示牌。這個文件告訴來訪的搜索引擎哪些房間能夠進入和參觀,哪些房間由於存放貴重物品,或可能涉及住戶及訪客的隱私而不對搜索引擎開放。但robots.txt不是命令,也不是防火牆,如同守門人沒法阻止竊賊等惡意闖入者。

環境搭建

須要的環境:node環境

須要安裝的東西: express、require、cheerio

能夠在這裏找到模塊的用法:https://www.npmjs.com,直接輸入模塊名字便可,好比:require

一、express這裏就不作介紹了,中文網址在這裏,能夠查看:http://www.expressjs.com.cn/

二、request模塊讓http請求變的更加簡單。最簡單的一個示例:

var request = require('request');
request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
      console.log(body);
    }
})

安裝:npm install request

三、cheerio 是爲服務器特別定製的,快速、靈活、實施的jQuery核心實現。

經過cheerio,咱們就能夠將抓取到的內容,像使用jquery的方式來使用了。能夠點擊這裏查看:https://cnodejs.org/topic/5203a71844e76d216a727d2e

var cheerio = require('cheerio'),
$ = cheerio.load('<h2 class="title">Hello world</h2>');
$('h2.title').text('Hello there!');

安裝:npm install cheerio

爬蟲實戰

假設你的電腦裏已經安裝好了node和express。那麼咱們如今開始進行咱們的爬蟲小程序:

一、首先隨便進入一個硬盤,假如是F盤,cmd環境下執行: express mySpider

    而後你發覺你的F盤上多了一個 mySpider的文件夾和一些文件,進入文件,cmd下執行  npm install

 

二、而後安裝咱們的require ==》npm install require --save 、再安裝咱們的cheerio==》npm install cheerio --save

 

三、安裝好後,執行npm start,若是想監聽窗口的變化,能夠執行:supervisor start app.js,而後在瀏覽器輸入:localhost:3000,這樣咱們就能夠在瀏覽器看到express的一些歡迎語啊什麼的

 

四、打開app.js文件,你會發覺裏面有一大堆東西,由於是爬蟲小程序嘛,因此都是不須要滴,刪,在express的API裏有這段代碼,粘貼在app.js裏面

app.js

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.listen(3000);

 

五、咱們的require登場了。繼續修改一下app.js改成:

var express = require('express');
var app = express();
var request = require('request');

app.get('/', function(req, res){
  request('http://www.cnblogs.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
       res.send('hello world');
    }
  })
});
app.listen(3000);

其中request的連接就是咱們要爬的網址,加入咱們要爬的是博客園的網站,因此輸入的是博客園的網址

 

六、引入cheerio,來讓咱們能夠操作爬到的網站的內容,繼續修改一下app.js

var express = require('express');
var app = express();
var request = require('request');
var cheerio = require('cheerio');

app.get('/', function(req, res){
  request('http://www.cnblogs.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
      //返回的body爲抓到的網頁的html內容
      var $ = cheerio.load(body); //當前的$符至關於拿到了全部的body裏面的選擇器
      var navText=$('.post_nav_block').html(); //拿到導航欄的內容
      res.send(navText);
    }
  })
});
app.listen(3000);

咱們抓到的內容都返回到了request的body裏面。cheerio能夠獲取全部的dom選擇器。假如咱們要獲取導航的內容:ul的class爲:post_nav_block

 

 而後咱們就能夠將裏面的內容顯示出來了:

這個說明,咱們的爬蟲小程序就成功了。固然,這是一個簡單的不能再簡單的爬蟲了。不過今天的文章就暫時介紹到這裏,只是大概瞭解一下爬蟲的過程而已。

接下來的第二篇文章會對這個爬蟲進行升級,改版。好比異步啦,併發啦,定時去爬啦等等。

代碼地址:https://github.com/xianyulaodi/mySpider

相關文章
相關標籤/搜索