1. 程式人生 > >一個簡單的網頁抓取工具

一個簡單的網頁抓取工具

前兩天遇到一個妹子,她說不會從拉網頁,我想用node做個網頁抓取工具是何嘗的簡單,於是裝x之路開始了。

其實想法很簡單,由網址得到html,由html解析css,js,image等,分別下載就行了,

一個難點就在路徑的解析上,一般的的頁面是域名的,例如www.baidu.com。而有的頁面是http://xxxxxx.com/c/xxxxx/xxxxxxx/index.html,路徑層級比較深,突然想到sea.js,一定對路徑問題也很頭疼,簡單看了一下,確實裡面的正則一個比一個複雜,沒辦法硬著頭皮來吧。正好把正則的正向零寬斷言看了一下,感覺不是以前我想的那麼難。

另個問題是另一個是非同步多執行緒問題,有的頁面裡面一定有很多圖片,難道我用單執行緒下載嗎?明顯不合適,所以要用多執行緒,怎麼使用多執行緒呢,參考我的文章

node多執行緒伺服器,這裡不再贅述。而這裡是多執行緒請求,參考cluster模組就行了。

再一個就是node的非同步程式設計方案,async/await函式和promise物件的使用,下載首頁的時候是要阻塞的,而下載css,js,image都是同步非阻塞的。

好了說這麼多不如上程式碼:

一個簡單的網頁抓去工具(node版)

為什麼不弄到github上呢?為自己的網站拉點流量嗎。

注:該連結是安全連線,不會將你的cookie傳送到我的伺服器,然後登入到你的cnblog,刪除你的部落格,請放心使用。