Python|常見的反爬及解決方法,值得收藏

2021-01-09 黑馬程式設計師

我們都知道Python用來爬數據,為了不讓自家的數據被別人隨意的爬走,你知道怎麼反爬嗎?今天播妞帶著大家一起見識見識常見的反爬技術。

首先我們來看一下爬蟲程序和反爬蟲之間的一張邏輯圖:

以下說4種網站反爬蟲方式。

1.通過User-Agent來控制訪問

無論是瀏覽器還是爬蟲程序,在向伺服器發起網絡請求的時候,都會發過去一個頭文件:headers, 表明身份。

對於爬蟲程序來說,最需要注意的欄位就是:User-Agent

很多網站都會建立 user-agent白名單,只有屬於正常範圍的user-agent才能夠正常訪問。

解決方法:

可以自己設置一下user-agent,或者更好的是,可以從一系列的user-agent裡隨機挑出一個符合標準的使用。

2.通過JS腳本來防止爬蟲

舉個例子:如果想爬取某個網站,在請求之前,它會有一個驗證頁面來驗證你是否機器。

它是怎麼實現的呢:

他會通過js代碼生成一大段隨機的數字,然後要求瀏覽器通過js的運算得出這一串數字的和,再返回給伺服器。

解決方法:

使用PhantomJS

* PhantomJS是一個Python包,他可以在沒有圖形界面的情況下,完全模擬一個」瀏覽器「,js腳本驗證什麼的再也不是問題了。

3.通過IP限制來反爬蟲

如果一個固定的ip在短暫的時間內,快速大量的訪問一個網站,那自然會引起注意,管理員可以通過一些手段把這個ip給封了,爬蟲程序自然也就做不了什麼了。

解決方法:

比較成熟的方式是:IP代理池

簡單的說,就是通過IP代理,從不同的IP進行訪問,這樣就不會被封掉IP了。

可是IP代理的獲取本身就是一個很麻煩的事情,網上有免費和付費的,但是質量都層次不齊。如果是企業裡需要的話,可以通過自己購買集群雲服務來自建代理池。

def get_ip_poll():'''模擬代理池返回一個字典類型的鍵值對,'''ip_poll = ["http://xx.xxx.xxx.xxx:8000","http://xx.xxx.xxx.xxx:8111","http://xx.xxx.xxx.xxx:802","http://xx.xxx.xxx.xxx:9922","http://xx.xxx.xxx.xxx:801"]addresses = {}addresses['http'] = ip_poll[random.randint(0, len(ip_poll))]return addresses

4.通過robots.txt來限制爬蟲

世界上做爬蟲最大最好的就是Google了,搜尋引擎本身就是一個超級大的爬蟲,Google開發出來爬蟲24h不間斷的在網上爬取著新的信息,並返回給資料庫,但是這些搜尋引擎的爬蟲都遵守著一個協議:robots.txt

robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文本文件,它通常告訴網絡搜尋引擎的漫遊器(又稱網絡蜘蛛)。此網站中的哪些內容是不應被搜尋引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。因為一些系統中的URL是大小寫敏感的,所以robots.txt的文件名應統一為小寫。robots.txt應放置於網站的根目錄下。如果想單獨定義搜尋引擎的漫遊器訪問子目錄時的行為,那麼可以將自定的設置合併到根目錄下的robots.txt,或者使用robots元數據(Metadata,又稱元數據)。robots.txt協議並不是一個規範,而只是約定俗成的,所以並不能保證網站的隱私。注意robots.txt是用字符串比較來確定是否獲取URL,所以目錄末尾有與沒有斜槓「/」表示的是不同的URL。robots.txt允許使用類似"Disallow: *.gif"這樣的通配符[1][2]。

當然在特定情況下,比如說我們爬蟲的獲取網頁的速度,和人類瀏覽網頁是差不多的,這並不會給伺服器造成太大的性能損失,在這種情況下,我們是可以不用恪守 robots協議的。

以上4種反爬方式,你學會了嗎?

相關焦點

  • 網站反爬蟲常見方法
    凡是有一定規模的網站,大公司的網站,或是盈利性質比較強的網站,都是有防爬措施的。網站為了正常運營,通常會設置各種反爬機制,讓爬蟲知難而退。今天神龍代理IP就給大家盤點一下網站常見的反爬蟲機制。網站反爬蟲常見方法1.通過UA判定UA即User Agent,它是請求瀏覽器的身份標誌。
  • 最全的 Python 反爬蟲及應對方案!
    爬蟲是 Python 的一個常見應用場景,很多練習項目就是讓大家去爬某某網站。爬取網頁的時候,你大概率會碰到一些反爬措施。這種情況下,你該如何應對呢?本文梳理了常見的反爬措施和應對方案。 1.解決方法:可以自己設置一下user-agent,或者更好的是,可以從一系列的user-agent裡隨機挑出一個符合標準的使用。實現難度:★ 2. IP限制如果一個固定的ip在短暫的時間內,快速大量的訪問一個網站,後臺管理員可以編寫IP限制,不讓該IP繼續訪問。解決方法:比較成熟的方式是:IP代理池img簡單的說,就是通過ip代理,從不同的ip進行訪問,這樣就不會被封掉ip了。
  • 用Python進行Web爬取數據
    目錄3個流行的工具和庫,用於Python中的Web爬蟲Web爬網的組件 Crawl Parse and Transform Store從網頁中爬取URL和電子郵件ID爬取圖片在頁面加載時抓取數據3個流行的工具和庫,用於Python中的Web爬蟲你將在Python中遇到多個用於Web抓取的庫和框架。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    22名片管理系統 23變量的引用以及是否可變 24局部變量和全局變量 25函數的返回值和參數進階 2部分 1面向對象基礎 2 面向對象練習 3單繼承和方法的重寫 4私有方法和屬性 5多繼承 6多態 7類屬性,類方法,靜態方法
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。4.反斜槓「\」反斜槓在正則表達式裡面不能單獨使用,甚至在整個Python裡都不能單獨使用。反斜槓需要和其他的字符配合使用來把特殊符號變成普通符號,把普通符號變成特殊符號。如:「\n」。
  • Python破解反爬蟲:最新反爬蟲有道翻譯中英文互譯破解,附代碼
    由於爬蟲的出現,導致很多網頁都設置了反爬蟲機制:常見的反爬蟲機制就是在客戶端發出請求的時候,在請求的內容中新增一些內容,而這些內容都是經過「加密的」,每次請求都是不同的,這樣就導致了很多傳統的爬蟲失效。
  • Python開發簡單爬蟲【學習資料總結】
    ;另一方面,會將新的URL補充進URL管理器,若有URL管理器中含有新的URL,則重複上述步驟,直到爬取完所有的URL 6、最後,調度器會調動應用的方法,將價值數據輸出到需要的格式。
  • python爬蟲入門實戰!爬取博客文章標題和連結!
    最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。準備階段爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。
  • 反滲透的25個常見問題及解決方法!
    根據各種物料的不同滲透壓,就可以使用大於滲透壓的反滲透壓力,即反滲透法,達到分離、提取、純化和濃縮的目的。本文介紹了反滲透膜在水處理應用中的25個常見問題及解決方法!反滲透系統應多久清洗一次?一般情況下,當標準化通量下降10~15%時,或系統脫鹽率下降10~15%,或操作壓力及段間壓差升高10~15%,應清洗RO系統。
  • 三防塗覆相關知識與常見工藝問題值得收藏轉發
    零組件須以機械方法來插牢,並須要有它們自己適用的填縫劑,這樣才有雙重的保險去防範意外的發生。塗三防的工藝實現方式與發展1.量小五要求,附加值低的一般手刷。                                                    局部反潤溼2
  • Python 爬蟲面試題 170 道
    59.python 字典和 json 字符串相互轉化方法60.請寫一個 Python 邏輯,計算一個文件中的大寫字母數量61. 請寫一段 Python連接 Mongo 資料庫,然後的查詢代碼。62.說一說 Redis 的基本類型。
  • biopython簡介
    OBF的成員項目部分如下 biopython基於python這個簡單易學的程式語言,提供了一系列處理常見生物信息任務的接口,具體可以完成以下幾種任務 1. 對常用的文件格式,比如fasta, blast等,進行讀寫 2.
  • 從零開始寫Python爬蟲,四大工具你值得擁有!
    那麼,學習python爬蟲之前需要哪些準備?一顆熱愛學習,不屈不撓的心一臺有鍵盤的電腦(什麼系統都行。我用的os x,所以例子會以這個為準)html相關的一些知識。不需要精通,能懂一點就行Python的基礎語法知識 。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1.版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。, '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5
  • python為什麼叫爬蟲?為啥那麼多人通過python兼職都能掙不少錢?
    Python能做什麼之前有很多文章介紹python能做什麼。今天介紹python爬蟲的學習。網絡爬蟲 網絡爬蟲,也叫網絡蜘蛛(Web Spider)。大家點開百度右擊網頁原始碼會發現是這些玩意:那其實這些許許多多的網站背後都是一些數據如果我們可以用一個自動化的程序輕輕鬆鬆就能把它們給爬取下來,是不是很爽?比如,一些文獻網站我們只要用 Python寫幾行代碼然後一運行這個程序就幫我們爬取所有的相關文獻到我們本地完全不需要我們費一點力氣。
  • 11種常見的家中、養花蟲害,防治方法大全送給你,值得收藏
    菇涼之前統計了11種常見的家中以及養花出現的蟲害,並且做了防治方法,今天送給大家,值得收藏哦!①蚧殼蟲蚧殼蟲就是個「吸血鬼」,春秋季最猖狂,把汁液給吸取了,導致花卉的養分水分流失,出現乾癟枯萎。取50多度的白酒10毫升稀釋30倍,噴灑在植株上,堅持3次,每隔2天噴一次,即可消滅。②蚜蟲這蚜蟲附生在枝幹花朵葉片上,吸取汁液,導致花卉植物衰退。
  • 收藏!最全從Python小白到大牛,要走的路這裡都有(一)
    收藏!長文!從Python小白到大牛,要走的路這裡都有面向項目的學習是學習編碼的最佳方法。Python是當今最需求的語言,為了幫助您學習它,以下是一些您可以探索的最重要的Python項目:Python遊戲Python圖像編程CIFAR10在Python中使用TensorFlow開始看吧,和從開始到放棄說再見俗話說的好,沒吃過豬肉還沒見過豬跑?
  • Python編程常見問題與解答
    答:列表的sort()方法是原地排序,沒有返回值。在Python中,沒有返回值的方法,都認為返回空值None,而空值是沒有index()方法的。12.問:我創建了一個集合,想在裡面加入一個列表作為元素,結果提示「TypeError: unhashable type: 'list'」,這是什麼意思呢?
  • Python 爬蟲面試題 170 道:2019 版
    59.python 字典和 json 字符串相互轉化方法60.請寫一個 Python 邏輯,計算一個文件中的大寫字母數量高級特效70.函數裝飾器有什麼作用?請列舉說明?71.Python 垃圾回收機制?
  • 起薪2萬的爬蟲工程師,Python需要學到什麼程度才可以就業?
    除此之外你還用過什麼方法來提高爬蟲效率? 有沒有做過增量式抓取? 對Python爬蟲框架是否有了解?第四點:爬蟲相關的項目經驗爬蟲重在實踐,除了理論知識之外,面試官也會十分注重爬蟲相關的項目: 你做過哪些爬蟲項目?