在使用python爬蟲的過程中,當我們掌握了爬蟲的基本技術,然後開始我們的爬蟲之旅的時候,各位小夥伴一定會遇到些許問題因而非常苦惱,現在我們就來探讨下這些在python爬蟲的過程中可能遇到的問題,以及如何解決這些問題。
第一個,JS加密技術。一般網頁的開發者為了不讓自己的js代碼輕易被别人拷貝,所以會采取一些加密的手段,來保護自己的代碼。但是,對于爬蟲的用戶來說,爬取到一些個亂碼實在是不太好受。因此,我們就需要解密。我們可以通過debug來找到js加密解密的代碼,然後通過python重新實現,但是這種方法很耗時。或者,我們可以使用selenium工具實現,但是這個工具的運行效率較低。
第二個,爬蟲策略。爬蟲的大部分時間都用在了訪問網絡的過程中,爬蟲的目的在于獲取網頁上的數據信息并對爬蟲獲得的數據進行提取等處理。但是,如果我們爬蟲和提取作為整個的爬蟲流程,效率其實是很低的。所以,我們應該将這兩個過程分開,單獨進行爬蟲,單獨進行提取才是更好的策略。
第三個,增量爬取。增量爬取就是爬蟲不去重複下載已經下載過的内容,要實現增量爬取,我們需要使用一個新的概念-網址池。網址池是用來統一管理所有的url地址的,我們通過網址池來記錄哪些是我們python爬蟲訪問過的,從而避免重複。網址池的用處還可以實現斷點續爬等等。斷點續爬就是讓之前沒有爬取完畢的url繼續爬蟲。
第四個,爬蟲去重。我們在爬取内容的時候,很可能這個内容被轉載多次,因此在多個url地址上可能會是相同的内容。如果我們不加分辨就進行爬蟲,毫無疑問會獲得大量重複的内容。一個簡單的方法是,通過文章内容的幾段話作為這個文章的标識符,将其存儲起來。一旦再次遇到相同的标識符,那就是重複的内容,不再進行爬蟲。
第五個,爬蟲被封禁。爬蟲會給服務器帶來很大的負載,因此很多服務器會限制爬蟲,甚至禁用爬蟲。大家都知道要構造合理的http訪問頭,如user-agent域的值。但是,這裡還有許多其它的避免被封禁的需要注意的問題,如放慢爬蟲訪問速度,使得爬蟲訪問路徑和用戶訪問路徑一緻,采取動态ip地址等等。
有話要說...