目錄
資料結構和演算法
關於實踐
爬蟲常用函式庫
首頁 後端開發 Python教學 Python爬蟲入門心得分享

Python爬蟲入門心得分享

Dec 05, 2017 am 09:53 AM
python 分享 心得

網路爬蟲是一種自動取得網頁內容的程序,也是搜尋引擎的重要組成部分。網路爬蟲為搜尋引擎從萬維網下載網頁。一般分為傳統爬蟲和聚焦爬蟲。

學爬蟲是循序漸進的過程,作為零基礎小白,大體上可分為三個階段,第一階段是入門,掌握必備的基礎知識,第二階段是模仿,跟著別人的爬蟲代碼學,弄清楚每一行程式碼,第三階段是自己動手,這個階段你開始有自己的解題想法了,可以獨立設計爬蟲系統。

爬蟲涉及的技術包括但不限於熟練一門程式語言(這裡以Python 為例) HTML 知識、HTTP/HTTPS 協定的基本知識、正規表示式、資料庫知識,常用抓包工具的使用、爬蟲框架的使用、涉及大規模爬蟲,還需要了解分散式的概念、訊息佇列、常用的資料結構和演算法、緩存,甚至還包括機器學習的應用,大規模的系統背後都是靠很多技術來支撐的。爬蟲只是為了獲取數據,分析、挖掘這些數據才是價值,因此它還可以延伸到數據分析、數據挖掘等領域,給企業做決策,所以作為一名爬蟲工程師,是大有可為的。

那麼是不是一定要把上面的知識全學完了才可以開始寫爬蟲嗎?當然不是,學習是一輩子的事,只要你會寫 Python 程式碼了,就直接上手爬蟲,好比學車,只要能開動了就上路吧,當然寫程式碼可比開車安全多了。

用 Python 寫爬蟲,首先需要會 Python,把基礎語法搞懂,知道怎麼使用函數、類別和常用的資料結構如 list、dict 中的常用方法就算基本入門。接著你需要了解 HTML,HTML 就是一個文檔樹結構,網路上有個 HTML 30分鐘入門教學 夠用了。然後是關於 HTTP 的知識,爬蟲基本原理就是透過網路請求從遠端伺服器下載資料的過程,而這個網路請求背後的技術就是基於 HTTP 協定。作為入門爬蟲來說,你需要了解 HTTP協定的基本原理,雖然 HTTP 規範用一本書都寫不完,但深入的內容可以放以後慢慢去看,理論與實踐結合。

網路請求框架都是對 HTTP 協定的實現,例如著名的網路請求庫 Requests 就是一個模擬瀏覽器發送 HTTP 請求的網路庫。在了解HTTP 協定之後,你就可以專門有針對性的學習和網路相關的模組了,例如Python 自帶urllib、urllib2(Python3中的urllib),httplib,Cookie等內容,當然你可以直接跳過這些,直接學習Requests 怎麼用,前提是你熟悉了HTTP協定的基本內容。這裡不得不推薦的一本書是《圖解HTTP》。數據爬下來,大部分情況是HTML 文本,也有少數是基於XML 格式或Json 格式的數據,要想正確處理這些數據,你要熟悉每種數據類型的解決方案,例如JSON數據可以直接使用Python自帶的模組json,對於HTML 數據,可以使用BeautifulSoup、lxml 等函式庫去處理,對於xml 數據,除了可以使用untangle、xmltodict等第三方函式庫。

入門爬蟲,學習正規表示式並不是必須的,你可以在你真正需要的時候再去學,例如你把資料爬取回來後,需要對資料進行清洗,當你發現使用常規的字串操作方法根本沒辦法處理時,這時你可以試著了解正規表示式,往往它能起到事半功倍的效果。 Python 的 re 模組可用於處理正規表示式。這裡也推薦幾個教程: 正則表達式30分鐘入門教程Python正則表達式指南正則表達式完全指南

數據清洗完最終要進行持久化存儲,你可以用文件存儲,比如CSV文件,也可以用資料庫存儲,簡單的用sqlite,專業點用MySQL,或是分散式的文檔資料庫MongoDB,這些資料庫對Python都非常友好,有現成的函式庫支援。 Python操作MySQL資料庫透過Python連接資料庫

從資料的抓取到清洗再到儲存的基本流程都走完了,也算是基本入門了,接下來就是考驗內功的時候了,很多網站都設有反爬蟲策略,他們想辦法阻止你用非正常手段獲取數據,比如會有各種奇奇怪怪的驗證碼限制你的請求操作、對請求速度做限制,對IP做限制、甚至對數據進行加密操作,總之,就是為了提高取得數據的成本。這時你需要掌握的知識就要更多了,你需要深入理解 HTTP 協議,你需要理解常見的加解密演算法,你要理解 HTTP 中的 cookie,HTTP 代理,HTTP中的各種HEADER。爬蟲與反爬蟲就是相愛相殺的一對,道高一次魔高一丈。如何應對反爬蟲沒有既定的統一的解決方案,靠的是你的經驗以及你所掌握的知識體系。這不是僅憑21天入門教學就能達到的高度。

資料結構和演算法

進行大規模爬蟲,通常都是從一個URL開始爬,然後把頁面中解析的URL連結加入待爬的URL集合中,我們需要用到佇列或優先隊列來區別對待有些網站優先爬,有些網站後面爬。每爬去一個頁面,是使用深度優先還是廣度優先演算法爬取下一個連結。每次發起網路請求的時候,都會牽涉到一個DNS的解析過程(將網址轉換成IP)為了避免重複地 DNS 解析,我們需要把解析好的 IP 快取下來。 URL那麼多,要如何判斷哪些網址已經爬過,哪些沒有爬過,簡單點就是是使用字典結構來儲存已經爬過的的URL,但是如果碰過海量的URL時,字典佔用的記憶體空間非常大,此時你需要考慮使用Bloom Filter(布隆過濾器),用一個線程逐個地爬取數據,效率低得可憐,如果提高爬蟲效率,是使用多線程,多進程還是協程,還是分散式操作。

關於實踐

網上的爬蟲教程多如牛毛,原理大體相同,只不過是換個不同的網站進行爬取,你可以跟著網上的教程學習模擬登錄一個網站,模擬打卡之類的,爬個豆瓣的電影、書籍之類的。透過不斷練習,從遇到問題到解決問題,這樣的收穫看書沒法比擬的。

爬蟲常用函式庫

  • urllib、urlib2(Python中的urllib)python內建的網路請求函式庫

  • urllib3 :線程安全的HTTP網路請求庫

  • requests:使用最廣泛的網路請求庫,相容於py2和py3

  • grequests:非同步的requests

  • BeautifulSoup:HTML、XML操作解析庫

  • lxml:另一個處理HTML、XML的方式

  • tornado:非同步網路框架

  • ##Gevent:非同步網路框架

  • Scrapy:最受歡迎的爬蟲框架

  • pyspider:爬蟲框架

  • xmltodict:xml轉換成字典

  • pyquery:像jQuery一樣操作HTML

  • Jieba :分詞

  • #SQLAlchemy:ORM框架

  • ##celery :訊息佇列
  • rq:簡單訊息佇列
  • python-goose :從HTML中擷取文字
  • 書籍推薦:

    《圖解HTTP》
  • 《HTTP權威指南》
  • 《電腦網路:自頂向下方法》
  • 《用Python寫網路爬蟲》
  • 《Python網路資料收集》
  • 《精通正規表示式》
  • 《Python入門到實踐》

《自己動手寫網路爬蟲》

《Crypto101》

《圖解密碼技術》

以上內容就是關於Python爬蟲技術入門經驗分享,希望能幫助大家。

###相關推薦:#########Python3 基礎爬蟲簡介############python最簡單的網頁爬蟲教學########## ###python爬蟲的實踐#######

以上是Python爬蟲入門心得分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles