牛逼,看完它,你就可以自己開發爬蟲了

2021-01-09 灣區碼農

很多人問寫爬蟲用什麼語言比較好,其實就和談戀愛一樣,沒有最好的,只有最合適的,選擇你最熟悉最順手的語言就好。今年各種需求不斷,寫了幾個爬蟲,都是用的 nodejs。

這裡總結一些用 nodejs 寫爬蟲的常用手段,學會了,就能爬取大部分網頁了。開發爬蟲的技巧很多也是復用的,記錄下來,日後能省不少事。

基本請求網頁方法

用 got 發送 Get 和 Post 請求,返回值均為 Promise,可以使用 async/await 和 Promise.all 來控制流程。

基本請求網頁方法

偽裝瀏覽器

通過設置 User-Agent 來模擬瀏覽器行為。現在很多伺服器都會檢查 User-Agent 來進行初步的反爬,設置 User-Agent 是很重要的一步。

偽裝瀏覽器

也可以通過下面的方式,來為每個請求帶上 User-Agent,當然其他參數也是一樣的。

為所有請求添加參數

取消自動重定向

這裡要說明一點,got 默認會自動進行重定向,並返回重定向後的返回值,而部分網站需要處理動態的 Cookie 才能得到正確的結果,自動重定向可能會使用不正確的 Cookie 導致結果永遠不對,因此還是老老實實手動重定向吧。

取消自動重定向

獲取特定 Cookie 的值

Cookie 通常用於用戶的身份鑑別,偶爾也用於加密反爬。寫爬蟲經常需要和它打交道,但是讀取 Cookie 的值不是很方便,這裡提供一個方法來簡單地獲取所需要的 Cookie 值,該方法同樣適用於獲取 Set-Cookie 的值。

獲取特定 Cookie 的值

Sleep

做爬蟲也要講文明,要在不影響對方服務的前提下進行,所以要控制爬蟲的速率。但是 nodejs 本身並沒有像 python 那樣的 time.sleep() 方法,因此要自己實現一個。

Sleep

頁面解析

可以使用正則表達式來解析頁面,比任何解析器都要強大。

想學習和在線測試正則表達式,強烈推薦到 RegExr,全是簡單的英文,很好懂。

除了正則,npm 上有很多做 HTML 解析的包,最常用也最多人用的就是 cheerio。

用法很簡單,和 jquery 一摸一樣。

頁面解析

當然,你也可以用 jquery,只不過需要 mock window 和 document 對象,所以需要配合 jsdom 來食用。

nodejs 中的 jquery

使用代理

使用爬蟲經常會碰到 IP 被封的情況,各種原因,要看具體的反爬機制,要是不幸中招,就需要使用代理來換一個 IP 繼續爬。此外,一些國外網站可能被 GFW 阻擋,導致無法訪問,如:P站,這時候就要使用科學上網,同樣需要通過代理的方式進行。

教你科學上網:程式設計師必備:正確的科學上網方式

got 有一個 agent 參數,配合 tunnel 可以實現代理。

使用代理

多進程並行爬取

javascript 是單線程的,nodejs 因此也一樣,但是現在普遍多核的大背景下,nodejs 早就意識到了這點,為了能夠充分的「壓榨」機器的性能,nodejs 推出一個內置模塊 – cluster。沒錯,單機集群,由一個父進程管理一群子進程。

這樣就可以通過多個子進程的方式來實現並行爬取。

多進程並行爬取

內容不多,但是非常實用,至少我自己在日常開發爬蟲的過程中經常使用,希望對各位有幫助吧。

相關焦點

  • python開發爬蟲有門檻嗎?
    如果你不是科班出身,沒有開發經驗,初次接觸開發爬蟲這檔子事兒,相信這篇文章能幫到你。python開發爬蟲肯定是有門檻的。儘管python很簡單,上手不難,但是開發起來你會發現,開發爬蟲不只是單單會python就可以了,你還得需要下列這些技能。
  • Python,爬蟲開發的不二選擇
    如果我們把網際網路比作一張大的蜘蛛網,數據便是存放於蜘蛛網的各個節點,而爬蟲就是一隻小蜘蛛,沿著網絡抓取自己的獵物(數據)。爬蟲指的是:向網站發起請求,獲取資源後分析並提取有用數據的程序。如今,人類社會已經進入了大數據時代,如何高效的獲取數據,已經成了各個網際網路公司的技術研發重點,掌握爬蟲技術已經成為了大數據公司技術人員不可或缺的一項技能。
  • 兩年磨一劍開發了這套爬蟲系統(附架構講解)
    做技術最忌諱雜而不精、技術的深度通常是工作驅動的,技術的廣度通常是興趣驅動的拿爬蟲領域來說根據自身面試經歷以及身邊很多爬蟲領域大佬的講述,大部分企業要求有爬蟲系統、爬蟲產品的開發經驗。這是為何呢?有過爬蟲系統及產品研發的工程師證明你在爬蟲這個領域的技術綜合能力是有深度的,從而也將導致你的待遇水漲船高!
  • 自己開發一套反爬蟲系統難嗎?看過來,手把手教你
    爬蟲,網絡安全最大的威脅之一!根據爬取數據類型而分,爬蟲有不少種類,比如爬取Email地址的、爬取商品價格的、爬取圖片的,而最多的是爬取內容的,內容數據爬蟲是為泛濫的!爬蟲讓很多人對其深感苦惱,今天將用Node.JS實現一種防護性能很強的反爬蟲系統。首先展示防護效果,然後付上完整代碼,以了解實現方法。
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 方法2:添加data,http header 向伺服器提交http的頭信息,形成一個data,可以向伺服器提交需要用戶輸入的數據。
  • Python爬蟲開發的就業前景如何
    首先,在當前的大數據應用環境下,如果單純做Python爬蟲開發,那麼在崗位競爭力上還是有所欠缺的。要想找到一個比較滿意的工作崗位,還需要進一步完善自身的知識結構。隨著Python語言的發展,目前不少程式設計師開始轉向Python開發,在學習Python開發的過程中,一個比較常見的案例就是採用Python開發爬蟲。用Python開發爬蟲是比較方便的,尤其在當前的大數據時代,通過爬蟲來獲取Web數據是一個比較常見的數據採集方式,所以在大數據應用的早期,通過Python開發爬蟲是不少Python程式設計師的重要工作內容之一。
  • 你的生活被這些「蟲子」包圍了嗎?爬蟲可以做哪些事?
    隨後,有媒體勾勒出爬蟲在這一事件中扮演的角色——51信用卡技術團隊涉嫌利用爬蟲技術,在網際網路上幫助催債人違規獲取了欠款人的個人通訊錄、地址定位等敏感信息。一瞬間,這場風波讓爬蟲這個專業名詞一下進入大眾視野。在各種新聞報導裡,這些「蟲子」似乎無所不能,可以替企業爬取到任何想要的信息。那麼它們究竟是什麼?又是怎麼成為不法工具的?使用App就會被竊取信息?
  • 網絡爬蟲作用有哪些?如何構建網絡爬蟲?
    而網絡爬蟲則是數據採集的主要方法。下面具體為大家介紹網絡爬蟲作用有哪些?如何構建網絡爬蟲?什麼是網絡爬蟲?網絡爬蟲是一種網際網路機器人,它通過爬取網際網路上網站的內容來工作。它是用計算機語言編寫的程序或腳本,用於自動從Internet上獲取任何信息或數據。機器人掃描並抓取每個所需頁面上的某些信息,直到處理完所有能正常打開的頁面。
  • Python爬蟲學到什麼程度就可以去找工作了?
    有朋友在群裡和大家討論,問的最多的問題就是,python 爬蟲學到什麼程度可以去找工作了,關於這點,和大家分享下我的理解。去招聘網上看看需求都有哪些,直接做個拉勾網爬蟲(有需要的私信)出結果了:仔細看看,我們可以得出以下幾點:1、 python 不是唯一可以做爬蟲的,很多語言都可以,
  • 人工智慧+Python:爬蟲開發必學的8個技巧
    現在,有越來越多所謂的「教程」來幫助我們提高爬蟲的易用性。本人收集了一些在爬蟲開發中容易出錯和被難住的小問題,提供了參考的意見和想法,以便於幫助爬蟲開發者。1、爬蟲亂碼(網址亂碼、返回頁面亂碼、提交數據亂碼)關於爬蟲亂碼有很多群友的各式各樣的問題,不僅是中文亂碼,還包括一些如日文、韓文 、俄文、藏文之類的亂碼處理,因此 確定源網頁的編碼。2、含有驗證碼錶單登陸屬於post請求,即先向伺服器發送表單數據,需要驗證碼的情況可以使用帶驗證碼登陸的cookie解決。
  • 常見的反爬蟲技術有哪些?如何防止別人爬自己的網站?
    搜尋引擎可以通過爬蟲抓取網頁信息,同時也有很多企業通過爬蟲獲取其他平臺的信息用於數據分析或者內容優化,但是對於自身網站有些頁面或者信息並不希望被爬蟲抓取,那我們如何來實現反爬蟲技術呢?如何防止別人爬自己的網站呢?
  • 想自學Python來開發爬蟲,該如何制定學習計劃
    自學Python可以按照以下幾個階段來進行:第一:Python基本語法的學習。學習Python的第一個階段是Python基本語法的學習,這個階段的學習一定要邊做實驗邊學習,而且實驗要有層次(驗證性實驗、綜合性實驗)來推進,這樣才會有一個比較好的學習效果。第二:重點練習爬蟲的開發。
  • Python爬蟲是什麼意思有啥用 python爬蟲原理實例介紹
    據華為中國官方消息,今日,華為中國發文《小白看過來,讓Python爬蟲成為你的好幫手》,文中詳細介紹了Python爬蟲的工作原理,我們來看一下吧。  以下為《小白看過來,讓Python爬蟲成為你的好幫手》全文:  隨著信息化社會的到來,人們對網絡爬蟲這個詞已經不再陌生。
  • Python爬蟲從入門到精通只需要三個月
    如何入門Python,為了能夠幫助大家更輕鬆的學好Python開發,Python爬數據,Python數據分析等相關理論知識,給大家共同分享自己一套Python學習生活資料,文章最後面的有附屬的相關資料,無論你是大牛還是小白,是想轉行還是想入行都可以來了解,一起不斷進步以及一起努力學習
  • 爬蟲究竟是合法還是違法的?
    來源:格隆匯作者:純潔的微笑來源:純潔的微笑據說網際網路上 50%以上的流量都是爬蟲創造的,也許你看到很多熱門數據都是爬蟲所創造的,所以可以說無爬蟲就無網際網路的繁榮。前天寫了一篇文章《 只因寫了一段爬蟲,公司200多人被抓!》,講述程式設計師因寫爬蟲而被刑偵的事件。文章傳播很廣,評論中討論最熱是:爬蟲究竟是合法還是違法的?
  • 爬蟲腦
    贊同學好奇,問我看啥好玩的書?我給他讀了下面這兩段:直到現在,控制我們行為的大腦成分依然是主要充滿生物本能的那部分,是處於大腦深處的那個區域,我們稱之為爬蟲腦(潛意識系統)。爬蟲腦的決策大多極度趨利避害。當我們在工作的時候,它會一直誘導我們拿起手機聊天,打開電腦遊戲,或者跟朋友遊玩。因為它是希望我們能夠保存更多的能量並且不斷去尋找食物和交配。
  • 探訪老TOM的爬蟲繁育基地
    他的繁殖場坐落於美國佛羅裡達州南部,建於上個世紀70年代,是一個有著40餘年繁殖養殖經驗的農場,在美國也有著相當悠久的歷史。家族的每位成員都是爬行動物繁殖、馴養、變異的資深專家。老TOM是一個非常和藹風趣的老頭兒,有客人去參觀,他會很熱情的拿出自己的鎮宅之寶給你看,給你介紹他的一些寶貝,對於自己的經驗和經歷更是侃侃而談。
  • 類似蜱蟲的不明八腳爬蟲你認識嗎? 它還會詐死
    閩南網9月21日訊 「我家院子發現很多小爬蟲,它還會詐死!」昨天,家住惠安縣城雙龜牌的林先生撥打海都熱線通95060說。這長得有點像蜱蟲的小蟲,你知道是什麼嗎?  在林先生家,我們看到,這些小爬蟲只有2~3毫米,黑褐色,有八隻腳和一對觸鬚,爬行速度非常快。
  • 成都學習Python開發哪家好
    當團隊合作開發時,閱讀別人的代碼將是非常迅速和高效的。通俗說來就是「寫起來快、看起來明白!」所以近年來,python開發非常流行。那麼成都python培訓機構有哪些好呢?成都市不同規模的python培訓機構有什麼不同?沒有任何一家機構所有的課程都是牛逼的,它和人一樣有優點和缺點,除非它只專注於教1-2門課程。大多數培訓機構都不願意這樣做。
  • 華為官方解析何為Python爬蟲
    IT之家7月8日消息 據華為中國官方消息,今日,華為中國發文《小白看過來,讓Python爬蟲成為你的好幫手》,文中詳細介紹了Python爬蟲的工作原理,我們來看一下吧。以下為《小白看過來,讓Python爬蟲成為你的好幫手》全文:隨著信息化社會的到來,人們對網絡爬蟲這個詞已經不再陌生。但什麼是爬蟲,如何利用爬蟲為自己服務,這些在ICT技術小白聽起來又有些高入雲端。