您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用nodejs寫一個代理爬蟲網站”,在日常操作中,相信很多人在怎么用nodejs寫一個代理爬蟲網站問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用nodejs寫一個代理爬蟲網站”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
nodejs有很多用途,除了操作文件和做web開發之外還可以做爬蟲,今天就用簡單的幾行代碼給大家演示一下,如何用nodejs實現一個代理爬蟲。
代理爬蟲的原理主要應用了代理服務器和爬蟲,如圖所示:
程序的主要邏輯在代理服務器里面,轉發請求,爬取數據,處理數據。
這里應用的技術棧包括:express、axios、cheerio、art-template
用express來創建一個web服務,axios爬取網頁,cheerio處理數據、art-template渲染數據。
爬蟲的目標網站是這個小說網站:https://www.biquke.com。
網站頁面是這樣的:
為了簡單咱們只演示爬取其中一本小說,凡人修仙傳https://www.biquke.com/bq/0/990/,頁面如圖:
第一步、首先咱們先用express來構建一個web服務器,代碼如圖:
回顧上面的代碼,咱們設計1個路由,展示凡人修仙傳的目錄頁面。
第二步、用axios請求目標頁面,axios這個庫前后端都可以用,當在瀏覽器中使用時其內部調用的XMLhttprequest對象發送異步請求,當在node端也就是后端使用時其調用的是node的http模塊的request方法。代碼如下:
打印結果如下:
仔細觀察結果,這個結果就是一段html格式的字符串,這些字符串中包含這凡人修仙傳這本小說的內容,我們要獲取如下信息:
1、小說的書名
2、小說的最新章節
3、小說的章節列表和每一章的鏈接
如何獲取這些信息呢?難道要用正則表達式來篩選嗎?當然不是。
第三步、處理數據獲取想要得到的數據,這里我們需要熟悉一個處理頁面數據的npm包,cheerio,包的地址:
來看一下官網文檔,看一下這個包的用法。代碼如下:
打印結果如下:
從以上結果我們可以看出cheerio的作用就是將html結構的字符串轉換成類似jquerydom對象的一種格式,然后用jquery的選擇器篩選想要獲得的數據,明白了以上用法,我們就可以繼續往下進行了,處理數據,代碼如下:
瀏覽器端發送求,在終端查看打印結果:
以上便得到了我們想要的數據,只有結果不是咱們最終結果,我們希望將數據渲染成頁面返回給用戶這里就用到了art-template。
第四步、用art-template將數據渲染成頁面,代碼如下:
模板代碼如下:
注意列表在渲染的時候每一章的a標簽鏈接的處理方式。
請求首頁地址結果如下:
以上只是目錄頁的實現方式,接下來每一章的詳情頁,這里需要注意,詳情頁路由再設計的時候,我們設置了一個params的請求參數,通過這個參數,我們可以拼接處用戶請求的是那一章的數據,從而去處理數據。代碼如下:
代碼地址如下: https://github.com/clm1100/spidertest
到此,關于“怎么用nodejs寫一個代理爬蟲網站”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。