基於express爬蟲,html
1,node作爬蟲的優點node
首先說一下node作爬蟲的優點
第一個就是他的驅動語言是JavaScript。JavaScript在nodejs誕生以前是運行在瀏覽器上的腳本語言,其優點就是對網頁上的dom元素進行操做,在網頁操做上這是別的語言沒法比擬的。python
第二就是nodejs是單線程異步的。聽起來很奇怪,單線程怎麼可以異步呢?想一下學操做系統的時候,單核cpu爲何可以進行多任務處理?道理也是相似,在操做系統中進程對CPU的佔有進行時間切片,每個進程佔有的時間很短,可是全部進程循環不少次,所以看起就像是多個任務在同時處理。js也是同樣,js裏有事件池,CPU會在事件池循環處理已經響應的事件,未處理完的事件不會放到事件池裏,所以不會阻塞後續的操做。在爬蟲上這樣的優點就是在併發爬取頁面上,一個頁面未返回不會阻塞後面的頁面繼續加載,要作到這個不用像python那樣須要多線程。jquery
其次是node的劣勢
首先是異步併發上。處理的好很方便,處理的很差就會很麻煩。例如要爬取10個頁面,用node不作異步處理話,那返回的結果可不必定是按一、二、三、4……這個順序,極可能是隨機。解決的辦法就是增長一個頁面的序列戳,讓爬取的數據生成csv文件,而後從新排序。express
第二個是數據處理上的劣勢,這點是不如python的,若是隻是單純的爬數據,用node固然很好,可是若是用爬來的數據繼續作統計分析,作個迴歸分析聚類啥的話,那就不能用node一步到底了。npm
二,爬蟲步驟json
1,express安裝node的環境數組
$ mkdir myapp
$ cd myapp
$ npm init===生成package.json
文件package.json
$ npm install express --save=======保存在依賴表中
$ npm install express============臨時安裝
http://www.expressjs.com.cn/starter/installing.html瀏覽器
2依賴包的安裝安全
var request = require('request');
var cheerio = require('cheerio');
放到依賴包的命令
npm install request --save
npm install cheerio --save
瞭解官網
https://www.npmjs.com/package/request
https://www.npmjs.com/package/cheerio
3,使用說明:
*request的使用說明,請求的狀態成功的狀態----200
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
*
cheerio ------相似jquery的使用方法
const $ = cheerio.load(body);
let data = [];
// 下面就是和jQuery同樣獲取元素,遍歷,組裝咱們須要數據,添加到數組裏面
$('#xy-impcon ul li').each(function (i, elem) {
let _this = $(elem);
data.push({
url: _this.find('a').attr('href').replace(/\/p\//, ""),
content: _this.find('a').text(),
});
});
3,文件讀取將數據下載到本地
*__dirname 當前的跟目錄
var fs = require('fs');
fs.writeFile(__dirname + '/data/article.json', JSON.stringify({
status: 0,
data: data
}), function (err) {
if (err) throw err;
console.log('寫入完成');
});
4, 每一個網站都有一個安全隱私,不讓別人進行爬取,各大網站均可以查找這個文件
robots.txt—>這個文件告訴你不能爬的內容
爬蟲的額外瞭解
1,微博的url ——》拼接一些關鍵字————httpget請求解析微博的內容——垂直——過濾——存儲 (規定在必定的時間內進行輪詢訪問)
1,封號的處理——》代理ip(是否被封號)——進行一個標識對於有用的ip進行過濾
爬蟲的用處
能夠用於商業,經過數據分析用戶行爲,情感的變化,進行的處理