可掌握的核心能力:
1. 掌握各類HTTP調(diào)試器用法
2. 理解網(wǎng)絡爬蟲編寫的基本套路
3. 了解網(wǎng)絡爬蟲編寫的各種陷阱
4. 能夠應對動態(tài)網(wǎng)站爬取
5. 能夠應對帶有驗證碼的網(wǎng)站
6. 能夠應對需要瀏覽器渲染的網(wǎng)站
7. 能夠應對分布式抓取需要
8. 能夠應對反爬蟲技術(shù)
9. 能夠應對無界面抓取
10. 能夠利用爬蟲平臺
學習的目的:
1、 讓大家掌握現(xiàn)實中編寫Python爬蟲會遇到的方方面面的問題,讓大家以后在實際爬蟲工作中,不懼任何挑戰(zhàn)。
可解決的現(xiàn)實問題及價值所在:
1. 掌握各類HTTP調(diào)試器用法
HTTP調(diào)試器是網(wǎng)絡爬蟲編寫的基礎。
2. 理解網(wǎng)絡爬蟲編寫的基本套路
經(jīng)過長期時間,爬蟲編寫其實已經(jīng)形成了一些基本的套路,掌握這些套路不僅有助于大家快速編寫爬蟲程序,也有助于大家理解前人的代碼。
這些套路也是一些爬蟲框架所使用的架構(gòu)基礎。
3. 了解網(wǎng)絡爬蟲編寫的各種坑
這些坑是實踐中的經(jīng)驗,非理論。這些坑也是消耗程序員時間最多的地方,解決這些坑需要的很多技巧和經(jīng)驗,這些往往是初級程序員所欠缺的,但是老師會把這些都告訴大家。
4. 能夠應對動態(tài)網(wǎng)站爬取
當前,越來越多的網(wǎng)站使用JS的動態(tài)技術(shù)加載某些內(nèi)容,甚至無須使用動態(tài)方式生成的信息也因為某些原因使用動態(tài)的方式生成。而這些信息是我們繼續(xù)爬取所需要的,這個時候,我們就需要解決這些動態(tài)性問題。
5. 能夠應對帶有驗證碼的網(wǎng)站
現(xiàn)在大部分信息檢索網(wǎng)站都會使用驗證碼技術(shù)保護自己的信息,免遭大規(guī)模的抓取,驗證碼識別技術(shù)已經(jīng)成為一個爬蟲程序員必須掌握的基本功。
6. 能夠應對需要瀏覽器渲染的網(wǎng)站
當前反爬蟲技術(shù)花樣繁多,有的網(wǎng)站如果不渲染出結(jié)果,只依靠網(wǎng)頁文本,則無從獲取到我們想要的信息,比如有的網(wǎng)站,我們所關注的信息是使用CSS拼接而來的,經(jīng)過瀏覽器的渲染,人可以輕松看懂網(wǎng)頁內(nèi)容,但是對于傳統(tǒng)的HTML爬蟲而言,則無法獲得自己想要的信息。
7. 能夠應對分布式抓取需要
對于企業(yè)級的爬取需求來說,分布式爬取是一個基本要求,因為單一爬蟲的爬取效率畢竟受到網(wǎng)絡交互速度的限制,但是分布式爬蟲,可以最大效率地利用網(wǎng)站服務器的服務能力,獲取信息。
8. 能夠應對反爬蟲技術(shù)
由于各個企業(yè)都有外部數(shù)據(jù)需求,因而爬蟲盛行。很多時候,網(wǎng)站的40%以上的流量是被爬蟲占據(jù)的,在這種情況下,業(yè)內(nèi)發(fā)展出了各式各樣的反爬蟲技術(shù)。應對這些反爬蟲技術(shù)也是我們工作內(nèi)容的一部分。
9. 能夠應對無界面抓取
對于我們開發(fā)者來說,有些網(wǎng)頁必須獲取它被JavaScript和CSS渲染之后的結(jié)果。通常來講我們可以使用瀏覽器驅(qū)動,來驅(qū)動Chrome等瀏覽器完成這項任務。但是對于大規(guī)模爬取任務來說,我們需要將我們的爬蟲部署到Linux服務器上,帶界面的Chrome瀏覽器并不是合適的選擇,因為它非常消耗計算資源。所以我們會選擇使用無界面的抓取方式對已經(jīng)成熟的代碼進行服務器端部署。
10. 能夠利用爬蟲平臺
無論國內(nèi)國外,都有很多的爬蟲平臺可以直接使用,有些甚至可以部署企業(yè)級爬蟲,并根據(jù)需要購買計算能力和存儲能力,甚至代理服務器ip也可以購買,同時有的平臺提供可視化和報警服務,這些內(nèi)容對于中小企業(yè)來說,并不是容易建立的資源環(huán)境,這時選擇一個合適爬蟲平臺,將自己編寫的爬蟲托管到爬蟲平臺上不失為一個合理的選擇。