国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node+express制作爬蟲教程

2019-11-19 18:59:10
字體:
來源:轉載
供稿:網友

最近開始重新學習node.js,之前學的都忘了。所以準備重新學一下,那么,先從一個簡單的爬蟲開始吧。

什么是爬蟲

百度百科的解釋:

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

通俗一點講:

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

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

什么是robots協議

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

Robots協議(也稱為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取?!?/p>

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

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

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

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

環境搭建

需要的環境:node環境

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

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

1、express這里就不做介紹了,中文網址在這里,可以查看: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 是為服務器特別定制的,快速、靈活、實施的jQuery核心實現。

通過cherrio,我們就可以將抓取到的內容,像使用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

爬蟲實戰

假設你的電腦里已經安裝好了node和express。那么我們現在開始進行我們的爬蟲小程序:

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

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

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

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

4、打開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);

5、我們的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的鏈接就是我們要爬的網址,加入我們要爬的是博客園的網站,所以輸入的是博客園的網址

6、引入cherrio,來讓我們可以操做爬到的網站的內容,繼續修改一下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里面。cherrio可以獲取所有的dom選擇器。假如我們要獲取導航的內容:ul的class為:post_nav_block

然后我們就可以將里面的內容顯示出來了:

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙门县| 浠水县| 陆良县| 卫辉市| 西平县| 宾阳县| 漯河市| 扎兰屯市| 繁峙县| 蒲城县| 白山市| 玉林市| 错那县| 京山县| 鄄城县| 政和县| 迁安市| 佛学| 荣昌县| 五大连池市| 宜都市| 沙田区| 遵义县| 邯郸市| 阿鲁科尔沁旗| 肇庆市| 布拖县| 宁武县| 博乐市| 台北县| 台东县| 唐山市| 宝丰县| 大宁县| 西昌市| 城步| 凌海市| 兴义市| 孝义市| 阜阳市| 揭东县|