1、爬蟲的核心是什么?
一直以來,對爬蟲技術很關注,自己閑來無事,也寫一些爬蟲。很多python初學者,將爬蟲定 自己的發展方向,但學習方法上,我認為有待商榷。
鄙人愚見,爬蟲最關鍵,最核心的不是如何寫程序,而是分析網站。而分析網站用到的則不是python的知識,分析網站所需要的技術包括且不局限于下面這些技術:
- html。
- javascrip。
- socket。
- http協議。
- 網絡分析工具,例如谷歌瀏覽器的開發者工具。
前面的分析工作做完了,才輪到python上場,python要解決的,是用代碼實現抓取的過程,而抓取的過程,數據的定位則完全依靠前面的分析工作。
最后,抓取到的數據要落庫,要保存到數據庫中,這里又涉及到數據庫。
2、 解決速度問題。
如果你幸運的解決了網站的分析工作和程序編寫,那么接下來,你可能要面對速度問題。
需要抓取的數據實在是太多了,你的程序不堪重負。這時,你要采取措施,提高抓取速度。
首先要考慮的是多線程技術,盡管python由于GIL鎖的存在導致無法有效利用CPU的多核優勢,但網絡IO是阻塞的,因此,多線程在這個場景下是可以提高效率的。
如果多線程依然無法滿足要求,可以使用多進程加多線程,如果依然無法滿足速度,則可以考慮分布式,用更多的機器進行爬取。
3、解決反爬機制。
大家都知道數據的重要性,所以,大點的網站,不會把數據放在那里,任由你抓取的,他們會采取多種反爬的機制,這是我認為爬蟲技術中最難的部分,不信的話,你可以去嘗試抓取一下淘寶的商品信息。
普通的反爬,很容易就繞過了,如果遇到封IP的情況,可以使用IP代理。
如果遇到了驗證碼,則可以有針對的寫驗證碼破解程序,但有些網站的驗證碼,實在是難以破解,比如滑動鼠標拼圖的那種。
4、 關于爬蟲框架。
爬蟲框架并不適合初學者,這是我的個人觀點。不只是爬蟲框架,包括web框架例如flask,django,我認為,都不適合初學者。我為什么這么說呢?原因就在于,如果你一上來就撲向各種框架,那么你只能學會皮毛,我不否定皮毛的作用,但如果你想成為真正的高手,你就必須關注底層的東西,底層的東西,就是我前面講到的html、javascript、socket、http協議。
我最初寫爬蟲時,只用requests 和 lxml 這兩個模塊,沒有任何問題,所以,如果你是初學者,我建議你從基礎的,簡單的事情做起,當你有能力做網站分析,有能力設計程序時,再去學習爬蟲框架,那個時候,事半功倍。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.