欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node+express制作爬蟲教程

 更新時間:2016年11月11日 08:49:18   作者:xianyulaodi  
這篇文章主要介紹了node+express制作爬蟲的詳細(xì)過程和相關(guān)基礎(chǔ)知識,非常的不錯,需要的朋友可以參考下

最近開始重新學(xué)習(xí)node.js,之前學(xué)的都忘了。所以準(zhǔn)備重新學(xué)一下,那么,先從一個簡單的爬蟲開始吧。

什么是爬蟲

百度百科的解釋:

爬蟲即網(wǎng)絡(luò)爬蟲,是一種自動獲取網(wǎng)頁內(nèi)容的程序。是搜索引擎的重要組成部分,因此搜索引擎優(yōu)化很大程度上就是針對爬蟲而做出的優(yōu)化。

通俗一點講:

把別人網(wǎng)站的信息給弄下來,弄到自己的電腦上。然后再做一些過濾,比如篩選啊,排序啊,提取圖片啊,鏈接什么的。獲取你需要的信息。

如果數(shù)據(jù)量很大,而且你的算法又比較叼,并且可以給別人檢索服務(wù)的話,那么你的爬蟲就是一個小百度或者小谷歌了

什么是robots協(xié)議

了解完什么是爬蟲之后,我們再來了解一下爬蟲的協(xié)議了,也就是哪些東西才已去爬。

Robots協(xié)議(也稱為爬蟲協(xié)議、機(jī)器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取?!?/p>

robots.txt文件是一個文本文件,它是一個協(xié)議,而不是一個命令。它是搜索引擎中訪問網(wǎng)站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務(wù)器上什么文件是可以被查看的。

當(dāng)一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機(jī)器人就會按照該文件中的內(nèi)容來確定訪問的范圍;

如果該文件不存在,所有的搜索蜘蛛將能夠訪問網(wǎng)站上所有沒有被口令保護(hù)的頁面。百度官方建議,僅當(dāng)您的網(wǎng)站包含不希望被搜索引擎收錄的內(nèi)容時,才需要使用robots.txt文件。如果您希望搜索引擎收錄網(wǎng)站上所有內(nèi)容,請勿建立robots.txt文件。

如果將網(wǎng)站視為酒店里的一個房間,robots.txt就是主人在房間門口懸掛的“請勿打擾”或“歡迎打掃”的提示牌。這個文件告訴來訪的搜索引擎哪些房間可以進(jìn)入和參觀,哪些房間因為存放貴重物品,或可能涉及住戶及訪客的隱私而不對搜索引擎開放。但robots.txt不是命令,也不是防火墻,如同守門人無法阻止竊賊等惡意闖入者。

環(huán)境搭建

需要的環(huán)境:node環(huán)境

需要安裝的東西: express、require、cherrio

可以在這里找到模塊的用法:https://www.npmjs.com,直接輸入模塊名字即可,比如:require

1、express這里就不做介紹了,中文網(wǎng)址在這里,可以查看:http://www.expressjs.com.cn/

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

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

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

app.listen(3000);

安裝:npm install request

3、cherrio 是為服務(wù)器特別定制的,快速、靈活、實施的jQuery核心實現(xiàn)。

通過cherrio,我們就可以將抓取到的內(nèi)容,像使用jquery的方式來使用了??梢渣c擊這里查看:https://cnodejs.org/topic/5203a71844e76d216a727d2e

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

安裝:npm install cherrio

爬蟲實戰(zhàn)

假設(shè)你的電腦里已經(jīng)安裝好了node和express。那么我們現(xiàn)在開始進(jìn)行我們的爬蟲小程序:

1、首先隨便進(jìn)入一個硬盤,假如是F盤,cmd環(huán)境下執(zhí)行: express mySpider

然后你發(fā)覺你的F盤上多了一個 mySpider的文件夾和一些文件,進(jìn)入文件,cmd下執(zhí)行 npm install

2、然后安裝我們的require ==》npm installrequire --save 、再安裝我們的cherrio==》npm install cherrio --save

3、安裝好后,執(zhí)行npm start,如果想監(jiān)聽窗口的變化,可以執(zhí)行:supervisor start app.js,然后在瀏覽器輸入:localhost:3000,這樣我們就可以在瀏覽器看到express的一些歡迎語啊什么的

4、打開app.js文件,你會發(fā)覺里面有一大堆東西,因為是爬蟲小程序嘛,所以都是不需要滴,刪,在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);

5、我們的require登場了。繼續(xù)修改一下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的鏈接就是我們要爬的網(wǎng)址,加入我們要爬的是博客園的網(wǎng)站,所以輸入的是博客園的網(wǎng)址

6、引入cherrio,來讓我們可以操做爬到的網(wǎng)站的內(nèi)容,繼續(xù)修改一下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為抓到的網(wǎng)頁的html內(nèi)容
   var $ = cheerio.load(body); //當(dāng)前的$符相當(dāng)于拿到了所有的body里面的選擇器
   var navText=$('.post_nav_block').html(); //拿到導(dǎo)航欄的內(nèi)容
   res.send(navText);
  }
 })
});
app.listen(3000);

我們抓到的內(nèi)容都返回到了request的body里面。cherrio可以獲取所有的dom選擇器。假如我們要獲取導(dǎo)航的內(nèi)容:ul的class為:post_nav_block

然后我們就可以將里面的內(nèi)容顯示出來了:

這個說明,我們的爬蟲小程序就成功了。當(dāng)然,這是一個簡單的不能再簡單的爬蟲了。不過今天的文章就暫時介紹到這里,只是大概了解一下爬蟲的過程而已。

接下來的第二篇文章會對這個爬蟲進(jìn)行升級,改版。比如異步啦,并發(fā)啦,定時去爬啦等等。

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

相關(guān)文章

  • package.json文件配置詳解

    package.json文件配置詳解

    這篇文章主要介紹了package.json文件配置詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-06-06
  • Nodejs Post請求報socket hang up錯誤的解決辦法

    Nodejs Post請求報socket hang up錯誤的解決辦法

    這篇文章主要介紹了Nodejs Post請求報socket hang up錯誤的解決辦法,本文因少加了headers字段信息導(dǎo)致出現(xiàn)這個錯誤,本文給出了一個完整的實現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • 深入理解NodeJS 多進(jìn)程和集群

    深入理解NodeJS 多進(jìn)程和集群

    這篇文章主要介紹了深入理解NodeJS 多進(jìn)程和集群,詳細(xì)的介紹了什么是進(jìn)程和進(jìn)程的實現(xiàn)等,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 如何自動化部署項目?折騰服務(wù)器之旅~

    如何自動化部署項目?折騰服務(wù)器之旅~

    這篇文章主要介紹了自動化部署項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 解讀node.js中的path路徑模塊

    解讀node.js中的path路徑模塊

    這篇文章主要介紹了解讀node.js中的path路徑模塊,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法

    Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法

    如何利用mongoose將數(shù)據(jù)寫入mongodb數(shù)據(jù)庫呢?操作方法很簡單,下面小編給大家分享Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法,感興趣的朋友一起看看吧
    2017-09-09
  • Node.js原生api搭建web服務(wù)器的方法步驟

    Node.js原生api搭建web服務(wù)器的方法步驟

    這篇文章主要介紹了Node.js原生api搭建web服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 配置Node.js環(huán)境變量詳細(xì)圖文教程

    配置Node.js環(huán)境變量詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于配置Node.js環(huán)境變量詳細(xì)圖文教程的相關(guān)資料,在Node.js中設(shè)置環(huán)境變量非常簡單,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • window系統(tǒng) nodejs安裝opencv環(huán)境配置圖文詳解

    window系統(tǒng) nodejs安裝opencv環(huán)境配置圖文詳解

    這篇文章主要介紹了window系統(tǒng) nodejs安裝opencv環(huán)境配置,結(jié)合圖文形式詳細(xì)分析了window環(huán)境下 nodejs安裝opencv的具體步驟、注意事項
    2023-04-04
  • 淺談express 中間件機(jī)制及實現(xiàn)原理

    淺談express 中間件機(jī)制及實現(xiàn)原理

    本篇文章主要介紹了淺談express 中間件機(jī)制及實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論