發現node可以爬蟲,正好我在找暑期實習,然後就使用node爬一下**資料找實習。
爬取目標**
//載入http模組
//目標**,嘿嘿,這個**有很多實習職位
});
http的get請求乙個目標**,**函式的引數是response,繫結兩個事件,乙個'data'事件,會不斷觸發獲取資料,資料獲取完觸發』end『 事件。
爬到的的資料就是目標**的html源**。
現在html**有了,我們該怎麼解析這個呢?
解析html**
在這裡我們使用cheerio模組,是伺服器端的html解析模組,使用方法型別jquery
}這樣我們就把目標頁面的每條招聘資訊的**存放進了乙個陣列,當然我們也可以通過物件字面量存一些其他資料,比如招聘資訊的title,date等等。
可能有人會問,我只要**幹嘛?嘿嘿,因為jd是在詳情頁裡面,不去爬詳情頁,我咋看jd。
併發請求
為演示方便:只獲取了職位title。
對arrurl迭代,get請求。因為是非同步操作,所以在這裡我們建乙個count變數,每次完成乙個操作count++,執行done函式,如果count值和arrurl陣列的長度相同,執行函式。
var count = 0;
var results = ;
function done()
}arrurl.foreach(function(item, index) );
res.on('end', function() ;
count++;
done();
});
});});
使用express模組讓資料響應到網頁var express = require('express');
function done() ).listen('8888', '127.0.0.1');
console.log('done');
}}
瀏覽器開啟 就能看到我們爬的資料了。
當然我們也可以 對這些資料處理一下,返回到網頁的是html內容文字。
使用eventproxy模組控制併發
剛才我們使用的是count變數,有些不夠優雅。這裡我們引入eventproxy模組。
var eventproxy = require('eventproxy');
//得到例項化物件ep
var ep = new eventproxy();
//after,第乙個引數是事件名,第二個引數是事件的數量,**函式的引數是list集合,
ep.after('subscribe', arrurl.length, function(results) ).listen('8888', '127.0.0.1');
console.log('done');
});arrurl.foreach(function(item, index) );
res.on('end', function() );
});
});
結束
通過nodejs爬蟲的學習,學習到了http,express,cheerio,eventproxy的簡單使用。更了解到了node非同步程式設計。
《使用 eventproxy 控制併發》
http模組
使用nodejs爬取靜態網頁資料
嘗試來做乙個爬蟲的教程,很大概率是乙個系列教程,分為靜態頁面,動態頁面,無頭瀏覽器 三個方向開始 主要是分享一下,也算是自己記乙個筆記吧,我們來找乙個靜態的 找個比較有意義的 爬取濟南的boos直聘列表資訊 首先宣告的是boos直聘擁有一部分的反扒,高頻次的訪問會要求輸入驗證碼,這次教程不會寫,之後...
java網頁資料爬取
在瀏覽器書籤中有許多經典的東西,有時候什麼忘記了需要去查詢的,也非常方便,但是痛苦的事情是某一天開啟書籤,居然那個頁面不知道飛哪去了,打不開,作為乙個程式設計師,當然不能容忍這種事情發生,那就把它們都爬下來。首先我們的書籤可能有幾種分類,為了處理方便,可以手動刪除我們不需要的,也可以程式處理一下 以...
python爬取網頁資料
import refrom urllib.request import urlopen 爬取網頁資料資訊 def getpage url response urlopen url return response.read decode utf 8 defparsepage s ret re.find...