寫網絡爬蟲程序的難度是怎麼分等級的

2020-12-12 電子發燒友

寫網絡爬蟲程序的難度是怎麼分等級的

猿人學 發表於 2020-02-05 11:49:55

寫爬蟲,是一個非常考驗綜合實力的活兒。有時候,你輕而易舉地就抓取到了想要的數據;有時候,你費盡心思卻毫無所獲。

好多Python爬蟲的入門教程都是一行代碼就把你騙上了「賊船」,等上了賊船才發現,水好深~比如爬取一個網頁可以是很簡單的一行代碼:

r = requests.get('http://news.baidu.com')

非常的簡單,但它的作用也僅僅是爬取一個網頁,而一個有用的爬蟲遠遠不止於爬取一個網頁。

一個有用的爬蟲,只需兩個詞來衡量:

數量:能否抓全所有該類數據

效率:抓完所有數據需要多久一天還是一個月

但要做到這兩個詞,卻是要下很多功夫。自己下功夫是一方面,也很重要的是你要抓全的目標網站給你出了多少難題。綜合起來,就寫一個爬蟲有多少難度。

網絡爬蟲難度一:只需爬取html網頁但要上規模

這裡我們舉個新聞爬蟲的例子。大家都用過百度的新聞搜索吧,我就拿它的爬蟲來講講實現上的難度。

新聞網站基本上不設防,新聞內容都在網頁的html代碼裡了,抓全一個網頁基本上就是一行的事情。似乎聽上去很簡單,但對於一個搜尋引擎級的爬蟲,就不那麼簡單了,要把幾千幾萬家新聞網站的新聞都及時抓取到也不是一件容易的事情。

我們先看看新聞爬蟲的簡單流程圖:

從一些種子網頁開始,種子網頁往往是一些新聞網站的首頁,爬蟲抓取網頁,從中提取網站URL放到網址池再進行抓取。這樣就從幾個網頁開始,不斷擴展到其它網頁。爬蟲抓取的網頁也越來越多,提取出的新網網址也會成幾何級數增長。

如何能在最短時間抓取更多網址?

這就是其中一個難度,這不是目標網址帶來的,而是對我們自身自願的考驗:

我們的帶寬夠嗎

我們的伺服器夠嗎,單臺不夠就要分布式

如何能及時抓取到最新的新聞?

這是效率之外的另一個難度,如何保證及時性?幾千家新聞網站,時刻都在發布最新新聞,爬蟲在織網式抓取「舊」新聞的同時,如何兼顧獲取「新」新聞呢?

如何存儲抓取到的海量新聞?

爬蟲織網式的爬取,會把每個網站幾年前幾十年前的新聞網頁都給翻出來,從而獲得海量的網頁需要存儲。就是存儲上的難度。

如何清理提取網內容?

從新聞網頁的html裡面快速、準確提取想要的信息數據,比如標題、發布時間、正文內容等,這又帶來內容提取上的難度。

網絡爬蟲難度二:需要登錄才能抓到想要的數據

人是貪婪的,想要的數據無窮盡,但是很多數據不是你輕易就可以獲得的。有一大類數據就是需要帳戶登錄後才能看到,也就是說,爬蟲請求時必須是登錄狀態才能抓取數據。

如何獲取登錄狀態?

老猿前面已經說過了,http協議的性質決定了登錄狀態就是一些cookies,那麼如何獲得登錄狀態就是一個非常有難度的問題。

有些網站登錄過程很簡單,把帳戶、密碼發給伺服器,伺服器驗證通過返回表示已登錄的cookies。這樣的網站,比較容易實現自動登錄,爬蟲運行過程全程無需人工幹預,你就有更多時間喝茶、聊天、上猿人學看python。

如何處理驗證碼?

然而,網站們既然要求你登錄了,他們就不會這麼輕易放過你,要做的更絕才能讓小猿們善罷甘休,那就是上驗證碼!

沒錯,就是變態的驗證碼。

有的運用社會工程,進行人工識別驗證碼;也有,通過圖像處理技術,尤其如今火熱的深度學習、人工智慧的技術,來自動識別驗證碼。

那麼,當你寫爬蟲時遇到驗證碼該怎麼辦?

網絡爬蟲難度三:異步加載甚至JavaScript解密

前面的兩個難度,都是靠我們研究數據加載過程,然後用Python代碼可以重現出來,進行抓取的。

而遇到達第三個難度時,研究數據加載過程會讓你十分痛苦、近乎崩潰。異步加載流程和伺服器來來回回好多次,最後得到的數據還要通過JavaScript解密才能看到,這都是壓垮小猿們的最後一根稻草。

有沒有終極大招可以破解呢?

網絡爬蟲難度四:APP的抓取

APP連包都抓不到

抓包是寫爬蟲組裝請求數據的基礎條件,對APP抓包的繁複度遠超網站,APP對代理抓包的檢測,對網絡請求庫的混淆,使用socket通信等阻擋了相當部分爬蟲選手。

請求Token參數的加密

APP請求參數的組裝是一個黑盒,不一窺參數的組裝流程,請求不到數據;APP repsonse回來的數據可能是二進位或編碼過,不知道如何解碼還原,抓下來數據也只能望洋興嘆。

要能正確抓取APP數據就需要具備網絡安全行業的初中級知識。

總結了一下這爬蟲的一些難度,明年應該會結合一些實際示例來講解如何破解這些不同程度的難題。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 簡單直觀的python爬蟲程序,從flask建立web程序到爬取過程
    有很多時候,要說清楚一個爬蟲程序對於新手來說有點抽象,不是那麼好理解,有一個好的辦法,爬蟲爬取的都是web網站的資源,那麼就可以用輕量級web框架flask來搭建一個web網站,然後寫一個爬蟲腳本來爬取這樣就可以比較容易的理解其工作原理。
  • Python網絡爬蟲之必備工具
    網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人),是一種按照一定的規則,自動的抓取全球資訊網信息的程序或者腳本。那麼要學會並精通Python網絡爬蟲,我們需要準備哪些知識和工具那?1 Python基礎知識Python作為現在最流行的程式語言之一,其強大之處也是毋庸置疑的,利用Python寫網絡爬蟲是最好不過的選擇啦,所以萬丈高樓平地起,學習網絡爬蟲最最基本的就是要掌握Python編程的基礎知識,了解以下幾點即可:基本數據結構
  • 當代「爬蟲」現狀
    一、「爬蟲」是什麼 大東:小白,身為計算機學科的學生,「網絡爬蟲」你應該不陌生吧? 小白:那當然了,寫的最多的就是「爬蟲」程序了。 大東:既然你這麼熟悉,能給我講講什麼是「爬蟲」麼?
  • 網絡爬蟲技術有哪些用途和危害?
    那麼在信息流量堪稱浩如煙海的網絡上,怎麼會被精確到每個用戶到底關注什麼呢?其實這就是運用了網絡爬蟲技術。估計有人對爬蟲二字看起來就發毛。與自然接觸少的城裡長大的人,很多都天生怕蟲子,不過對從小燒烤蒸煮過無數蟲子螞蚱的老一代人來說,蟲子又有什麼可怕的?網絡爬蟲說到底就是一種小程序,屬於按照一定的規則,自動抓取全球網絡上的程序和腳本。
  • Web 爬蟲現已合法?
    江湖傳言,網際網路上50%以上的流量都是由爬蟲創造的,很多人都表示:無爬蟲就無網際網路的繁榮。也正因為此,網上各種爬蟲教程風靡不絕,惹各路大神小白觀之參與之。但是,無節制的背後往往隱藏著風險,類似「只因寫了一段爬蟲,公司200多人被抓!」、「程式設計師爬蟲竟構成犯罪?」等報導也時有發生。關於爬蟲合法性的討論,CSDN也在此前的《爬蟲到底違法嗎?這位爬蟲工程師給出了答案》、《不要在爬蟲犯罪的邊緣瘋狂試探!》
  • 成為搜索產品經理(2):認識網絡爬蟲
    因為我本身並不從事技術崗位,本篇文章的讀者,我也默認是與我一樣,不從事技術崗位,但對技術有一定感知的同學,我將盡力將文章寫得簡單、易懂。索引引擎系統由多個子模塊組成,先來了解第一個模塊,網絡爬蟲。一、網絡爬蟲是什麼?
  • Forrester:Akamai為爬蟲程序管理領域領導者
    但是,在高效的自動化流量的對立面是惡意爬蟲程序——惡意攻擊者使用這些軟體程序來自動發起攻擊。Forrester報告指出:「為了應對這些最為複雜的爬蟲程序,安全專業人員需要爬蟲程序管理工具來對檢測方法進行分層(比如針對用戶行為的統計分析)、收集生物統計信息以檢測異常以及不斷更新信譽評分。」
  • 放下你手裡的代碼:爬蟲技術的善與惡
    爬蟲的技術原理搜尋引擎收集網上信息的主要手段就是網絡爬蟲(也叫網頁蜘蛛、網絡機器人)。它是一種「自動化瀏覽網絡」的程序,按照一定的規則,自動抓取網際網路信息,比如:網頁、各類文檔、圖片、音頻、視頻等。搜尋引擎通過索引技術組織這些信息,根據用戶的查詢,快速地提供搜索結果。設想一下,我們平時瀏覽網頁的時候會怎麼做?
  • 網絡爬蟲設計中需要注意的幾個問題
    「網絡爬蟲」又叫網絡蜘蛛,實際上就是一種自動化的網絡機器人,代替了人工來獲取網絡上的信息。許多公司的業務和戰略都需要很多數據進行多維度分析,這也使爬蟲越來越受大家青睞。爬蟲說起來是件簡單的事情。但是往往簡單的事情要做到極致就需要克服重重困難。
  • 蜘蛛程序有怎樣的爬取邏輯,今天網絡推廣公司小編來告訴你
    北京初雪-網絡推廣哪家好蜘蛛程序是網絡推廣公司小編這幾天寫的非常多的內容,如果你看了我的前幾篇文章就應該還記得蜘蛛程序的作用和功能,之前的文章我們說了蜘蛛程序的抓取喜好和價值的判定,今天我們就來說一下蜘蛛程序是怎樣來爬取內容的,在爬取過程中又有哪些行為步驟呢?
  • 網絡爬蟲也有表達公式嗎?表達公式是什麼
    網絡爬蟲的速度會直接影響目標網站的伺服器,因此為了能不給目標網站帶來不必要的損失,要控制好網絡爬蟲的速度,不可以太快,但也不可以過慢,沒有耐心等,爬蟲速度要怎麼限制呢?一、控制網絡爬蟲速度1)初始化:設置初始延時時間T0和比例係數Kp(典型值-0.05);2)目標設置:設置網絡爬蟲速度S,例如40頁/分鐘;3)測量:統計每分內網絡爬蟲抓取網頁的數量n,可能是32,也可能是100;
  • 網絡爬蟲無處不在,無意中的連結分享就能洩露你的隱私
    回答前,需要解釋一下網頁爬蟲的作用。今天,搜尋引擎已經成為大家上網衝浪的標配,甚至有「內事不決問百度,外事不決問谷歌」的說法。搜尋引擎可以根據用戶的需要提供內容豐富的網上信息,相對於傳統的紙質信息媒介,從根本上改變了人們獲取及處理信息的習慣,極大提高了效率。而其基礎就在於大量收集網頁信息的網絡爬蟲。在搜尋引擎發展的初期,程序猿小哥哥相互間炫耀的一個指標就是,自己的爬蟲收集的網頁數量。
  • 爬蟲究竟是合法還是違法的?
    來源:格隆匯作者:純潔的微笑來源:純潔的微笑據說網際網路上 50%以上的流量都是爬蟲創造的,也許你看到很多熱門數據都是爬蟲所創造的,所以可以說無爬蟲就無網際網路的繁榮。前天寫了一篇文章《 只因寫了一段爬蟲,公司200多人被抓!》,講述程式設計師因寫爬蟲而被刑偵的事件。文章傳播很廣,評論中討論最熱是:爬蟲究竟是合法還是違法的?
  • Python資料全家桶—網絡爬蟲入門到實踐,共計4.2G
    前言網絡爬蟲是一個模擬人類請求網站行為的程序 ,可以自動請求網頁,並將數據抓取下來,然後使用一定的規則來提取有價值的數據。網絡爬蟲的分類:通用爬蟲、聚焦爬蟲。業界內也很少叫蜘蛛的, 一般都叫做網絡爬蟲, Spider只是個別爬蟲的名稱。建議將詞條名稱改為網絡爬蟲。
  • Python爬蟲最詳解析!網上搬磚工程師必看
    PYTHON越來越被人們所熟知,那麼PYTHON爬蟲又是何方聖神?在如今人工智慧和大數據的年代,我們去百度上搜索某個商品關鍵詞的時候,在打開淘寶時首頁就立馬出現剛才在搜尋引擎上搜索的物品了。這個時候會有點茫然,為什麼淘寶怎麼知道我想買什麼物品呢,知道我的興趣愛好呢?
  • Python,爬蟲開發的不二選擇
    網際網路是由一個個站點和網絡設備組成的大網,我們通過瀏覽器訪問站點,站點把HTML、JS、CSS代碼返回給瀏覽器,這些代碼經過瀏覽器解析、渲染,將豐富多彩的網頁呈現我們眼前。如果我們把網際網路比作一張大的蜘蛛網,數據便是存放於蜘蛛網的各個節點,而爬蟲就是一隻小蜘蛛,沿著網絡抓取自己的獵物(數據)。
  • 資料|精通 Python 網絡爬蟲:核心技術、框架與項目實戰
    from=leiphonecolumn_res0731為什麼寫這本書 · · · · · ·網絡爬蟲其實很早就出現了,最開始網絡爬蟲主要應用在各種搜尋引擎中。在搜尋引擎中,主要使用通用網絡爬蟲對網頁進行爬取及存儲。
  • Python基礎教程——爬蟲——起步
    提起,Python,那是必須要提到爬蟲的,雖然其他語言也能爬蟲,但是Python無疑是首選,也是最優解。要說起爬蟲,技術細節還是蠻多的,本文的目的是讓你在最短的時間內掌握思路,許多人說起爬蟲,不知道從哪裡入手,不知道要怎麼辦,這才是要解決的重點。本文提供三套解決思路供大家參考。
  • 如何高效使用爬蟲IP代理?
    但網際網路上存留的數據非常龐大,單靠人力進行數據採集已遠不能滿足需求,因此效率高、成本低的網絡爬蟲廣受人們青睞,成為爬取收錄信息的主流方式。爬蟲代理IP是網絡爬蟲的必備工具,可以讓數據採集變得更加高效。那麼如何使用代理IP,才能保證爬蟲高效、快速、精準地採集數據呢?神龍IP帶大家一起來看看~
  • 使用Scrapy網絡爬蟲框架小試牛刀
    說人話就是只要是搞爬蟲的,用這個就van事了,因為裡面集成了一些很棒的工具,並且爬取性能很高,預留有很多鉤子方便擴展,實在是居家爬蟲的不二之選。qiushibaike注:此時,我們已經創建好了一個爬蟲項目,但是爬蟲項目是一個文件夾進入爬蟲項目如果想要進入這個項目,就要cd進這個目錄,如上上圖所示,先cd <項目>,再創建蜘蛛項目目錄結構解析此時,我們就已經進入了項目,結構如下,有一個和項目名同名的文件夾和一個scrapy.cfg文件scrapy.cfg