nodeJs爬取網頁資料

2022-02-25 10:35:06 字數 2110 閱讀 3299

發現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...