熱線電話:13121318867

登錄
首頁大數據時代一個Python爬蟲工程師的修養
一個Python爬蟲工程師的修養
2021-02-26
收藏

來源:麥叔編程

作者:麥叔

練武不練功,到老一場空

練武的人都知道:練武不練功,到老一場空!

說的是只練花架子,不練習內功,最終也都是一個菜鳥級武師。

一個Python爬蟲工程師的修養

學習編程何嘗不是!我時常見到已經學習相當一段時間的程序員,連稍微深點的基本知識都沒有掌握??蓢@,可悲??!根子不牢,注定走不遠啊!

基于實例學習編程非常重要,也非常有效,但與此同時,我們也必須不斷的加強基本功的學習,刻意的加強相關的技術。掌握技術脈絡,加強各項技術,跳出編程語言本身,練好內功,才能爬的又快又好,成為一個高級的爬蟲工程師!

本文從爬蟲的技術原理出發,討論了Python爬蟲工程師必須掌握和不斷加強的幾項技術。

技術脈絡

一個Python爬蟲工程師的修養
  1. 程序發送請求給網頁服務器,請求基于HTTP協議
  2. 服務器返回網頁或者數據,格式為HTML,JSON,XML等。
  3. 程序從HTML,JSON,XML等文本中解析返回的網頁,用的技術包括xpath, 正則表達式,css選擇器等。
  4. 程序把解析好的保存到文件或者數據庫中供后續分析使用。文件格式通常是cvs,數據庫可以使用關系型數據庫如MySQL,或者非關系型數據庫如MongoDB
一個Python爬蟲工程師的修養

除此之外,網站會有各種反爬取技術,爬蟲工程師和網站開發工程一個攻,一個守,斗智斗勇。

一個Python爬蟲工程師的修養

另外,爬蟲10個網頁和爬取10000個網站是不同的概念,你需要維護要爬取的數以萬計的URL,設置更新頻率,去掉不需要的URL等等,查看各個網站的爬取狀態等,這就是一個工程化的問題。商業級的爬蟲涉及到很多工程化問題。

就像家庭作坊可以就在自己院子里,一家人就能生產出少量的產品。但要大量生成就需要廠房,財務,人事等企業框架和管理制度、

Python爬蟲工程師的修養

下面列舉了爬蟲工程師需要不斷掌握和精進的基本功技術:

HTTP協議

HTTP協議是爬蟲和網頁交流的語言,如果不懂這個語言,你肯定不能成為一個有效的爬蟲工程師。你也不需要成為一個協議專家,主要掌握請求,相應,header,cookie等就可以了。

一個Python爬蟲工程師的修養

網頁格式:HTML和CSS

我們看到的網頁基本都是HTML的格式,我們要從HTML的腳本中找出所需要的信息,就必須掌握HTML的格式。

一個Python爬蟲工程師的修養

同樣的一個HTML頁面,我們可以展現不同的樣式。我們通過CSS來指定樣式,比如指定表格用什么背景顏色,文字用什么字體等。

這些樣式,本來不是爬蟲工程師在意的事情,因為我們只在意數據。但是通過CSS,我們可以有效的定位到某些數據,所以CSS還是需要學習的,后面的數據解析部分會再次提到CSS。

網頁格式:JavaScript

HTML是完全靜態的網頁,為了在網頁上實現動態效果,就有了JavaScript。很多網頁上的數據并沒有直接在HTML中給出,而是通過JavaScript后續又加載出來的。

一個Python爬蟲工程師的修養

實際上,JavaScript是編程語言排行榜上很靠前的編程語言,所謂的前端開發者需要精通JavaScript,而爬蟲工程師了解基本的知識,知道Ajax請求的相關原理,有時候還要知道如何用JavaScript加密,就差不多了。

網頁格式:JSON

JSON是JavaScript Object Notation的意思,可以理解成一種數據結構。一般的數據API都是以JSON格式的:

一個Python爬蟲工程師的修養

數據解析 - xpath

我們需要用某種技術,從HTML中找出我們想要的數據,xpath是其中一種。簡單說,就是通過路徑來找到想要的數據:

一個Python爬蟲工程師的修養

數據解析 - css選擇器

通過指定樣式,我們也可以定位到指定的數據,再解析數據:

一個Python爬蟲工程師的修養

因為喜歡Jquery的原因,我個人更喜歡CSS選擇器。

數據解析 - 正則表達式

前兩種數據解析都是基于結構的解析方式,而正則表達式(re)就把HTML當成一個文本,不在意其中的結構,用字符串的規則解析數據:

一個Python爬蟲工程師的修養

數據存儲 - csv

CSV是用逗號隔開的一種純文本的數據格式,是數據分析和處理中最常用的格式。CSV可以用記事本打開,也可以用Excel打開。

一個Python爬蟲工程師的修養

數據存儲 - 數據庫

數據存儲在CSV等文本中很方便,但是數據的查詢和處理不方便,為了解決這個問題,我們可以會把數據保存在數據庫中。

這是很廣闊的領域,數據庫是計算機技術中最重要分分支之一。值得你不斷地學習和精進。相比前面的HTML等,你只要幾個小時就可以學會了,后面也不怎么需要更新知識。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢