前兩天遇到一個妹子,她說不會從拉網頁,我想用node作個網頁抓取工具是未嘗的簡單,因而裝x之路開始了。css
其實想法很簡單,由網址獲得html,由html解析css,js,image等,分別下載就好了,html
一個難點就在路徑的解析上,通常的的頁面是域名的,例如www.baidu.com。而有的頁面是http://xxxxxx.com/c/xxxxx/xxxxxxx/index.html,路徑層級比較深,忽然想到sea.js,必定對路徑問題也很頭疼,簡單看了一下,確實裏面的正則一個比一個複雜,沒辦法硬着頭皮來吧。正好把正則的正向零寬斷言看了一下,感受不是之前我想的那麼難。node
另個問題是另外一個是異步多線程問題,有的頁面裏面必定有不少圖片,難道我用單線程下載嗎?明顯不合適,因此要用多線程,怎麼使用多線程呢,參考個人文章node多線程服務器,這裏再也不贅述。而這裏是多線程請求,參考cluster模塊就好了。git
再一個就是node的異步編程方案,async/await函數和promise對象的使用,下載首頁的時候是要阻塞的,而下載css,js,image都是同步非阻塞的。github
好了說這麼多不如上代碼:編程
一個簡單的網頁抓去工具(node版)promise
爲何不弄到github上呢?爲本身的網站拉點流量嗎。安全
注:該連接是安全鏈接,不會將你的cookie發送到個人服務器,而後登陸到你的cnblog,刪除你的博客,請放心使用。服務器