為什麼python爬蟲工程師崗位這麼火熱?

weixin_34132768發表於2018-12-12

什麼是網路爬蟲?

網路爬蟲是一個自動提取網頁的程式,它為搜尋引擎從全球資訊網上下載網頁,是搜尋引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入佇列,直到滿足系統的一定停止條件。

為什麼python爬蟲工程師崗位這麼火熱?

爬蟲有什麼用?

  • 做為通用搜尋引擎網頁收集器。(google,baidu)
  • 做垂直搜尋引擎.
  • 科學研究:線上人類行為,線上社群演化,人類動力學研究,計量社會學,複雜網路,資料探勘,等領域的實證研究都需要大量資料,網路爬蟲是收集相關資料的利器。
  • 偷窺,hacking,發垃圾郵件……

很多語言可以用來寫爬蟲,例如Java,PHP,Python等等。它們各有自己的優缺點。

PHP 和 Python 都寫過爬蟲和正文提取程式。


最開始使用 PHP 所以先說說 PHP 的優點:

1.語言比較簡單,PHP 是非常隨意的一種語言。寫起來容易讓你把精力放在你要做的事情上,而不是各種語法規則等等。

2.各種功能模組齊全,這裡分兩部分:

1.網頁下載:curl 等擴充套件庫;

2.文件解析:dom、xpath、tidy、各種轉碼工具,可能跟題主的問題不太一樣,我的爬蟲需要提取正文,所以需要很複雜的文字處理,所以各種方便的文字處理工具是我的大愛。;

總之容易上手。

缺點:

1.併發處理能力較弱:由於當時 PHP 沒有執行緒、程式功能,要想實現併發需要借用多路服用模型,PHP 使用的是 select 模型。實現其來比較麻煩,可能是因為水平問題我的程式經常出現一些錯誤,導致漏抓。

為什麼python爬蟲工程師崗位這麼火熱?

再說說 Python:


優點:

1.各種爬蟲框架,方便高效的下載網頁;

2.多執行緒、程式模型成熟穩定,爬蟲是一個典型的多工處理場景,請求頁面時會有較長的延遲,總體來說更多的是等待。多執行緒或程式會更優化程式效率,提升整個系統下載和分析能力。

3.GAE 的支援,當初寫爬蟲的時候剛剛有 GAE,而且只支援 Python ,利用 GAE 建立的爬蟲幾乎免費,最多的時候我有近千個應用例項在工作。

缺點:

1.對不規範 HTML 適應能力差:舉個例子,如果一個頁面裡面同時有 GB18030 字符集的中文和 UTF-8 字符集的中文,Python 處理起來就沒有 PHP 那麼簡單,你自己需要做很多的判斷工作。當然這是提取正文時的麻煩。

Java 和 C++ 當時也考察過,相對指令碼語言比較麻煩,所以放棄。

總之,如果開發一個小規模的爬蟲指令碼語言是個各方面比較有優勢的語言。如果要開發一個複雜的爬蟲系統可能 Java 是個增加選項, C++ 我感覺寫個模組之類的更加適合。對於一個爬蟲系統來說,下載和內文解析只是基本的兩個功能。真正好的系統還包括完善的任務排程、監控、儲存、頁面資料儲存和更新邏輯、排重等等。爬蟲是一個耗費頻寬的應用,好的設計會節約大量的頻寬和伺服器資源,並且好壞差距很大。

總體而言

寫爬蟲是一邊寫,一邊測試。測試不過再改改。這個過程用 python 寫起來最方便。

而且 python 相關的庫也是最方便,有 request, jieba, redis, gevent, NLTK, lxml, pyquery, BeautifulSoup, Pillow. 不論是最簡單的爬蟲還是巨複雜的爬蟲都輕鬆搞定。

如果你還是一個新手從成為一名python工程師,可以從“我的專欄”進行從入門的學習。

相關文章