Python爬蟲入門 day02

第一章 爬蟲簡介

1.1 什麼是網絡爬蟲

1.1.1 爬蟲的簡單定義

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

簡單來說:使用事先寫好的程序去抓取網絡上所需要的數據,這樣的程序就叫網絡爬蟲

1.1.2 爬蟲的分類

網絡爬蟲可以分為通用網絡爬蟲(如搜索引擎的爬蟲,根據幾個URL的種子不斷的去抓取數據)和聚焦網絡爬蟲(有選擇性的抓取預先定義好的主題和相關頁面的網絡爬蟲)。

A.通用網絡爬蟲:

搜索引擎中第一步就是爬蟲。但是搜索引擎中的爬蟲是一種廣泛獲取各種網頁的信息的程序;除了HTML文件外,搜索引擎通常還會抓取和索引文字為基礎的多種文件類型,如TXT,WORD,PDF等; 但是對於圖片,視頻,等非文字的內容則一般不會處理;但是對於腳本和一些網頁中的程序是不會處理的;

Python爬蟲入門 day02

B.聚焦網絡爬蟲:

針對某一特定領域的數據進行抓取的程序。比如旅遊網站,金融網站,招聘網站等等;特定領域的聚集爬蟲會使用各種技術去處理我們需要的信息,所以對於網站中動態的一些程序,腳本仍會執行,以保證確定能抓取到網站中的數據;

1.2 為什麼需要爬蟲

1.2.1 爬蟲的用途

A.解決冷啟動問題:對於很多社交類的網站,冷啟動是很困難的。對於新註冊的用戶而言,要留住他們,需要先注入一批假用戶,已構造社區的氛圍。一般這些假的用戶可以通過網絡爬蟲從微博或其他APP中抓取而來;今日頭條等互聯網媒體最早也就是使用了爬蟲+網頁排序的技術,所以它們解決冷啟動的方式也是需要爬蟲;B.搜索引擎的根基:做搜索引擎少不了爬蟲程序;

C.建立起知識圖譜,幫助建立機器學習的訓練集:

Python爬蟲入門 day02

D.可以製作各種商品的比價,趨勢分析等:

Python爬蟲入門 day02

Python爬蟲入門 day02

E.其他:比如分析淘寶上競爭對手的數據;分析微博的數據傳遞影響力,政府的輿情分析,分析人與人之間的關係等等;

Python爬蟲入門 day02

Python爬蟲入門 day02

總之一句話:在當今的大數據時代,做任何價值分析的前提是數據,而爬蟲則是獲得這個前提的一個低成本高收益手段;而對同學們而言,另一個重要的價值是解決就業問題。1.2.2怎麼做爬蟲

用Python做爬蟲非常的簡單,在交互式環境中簡單的兩行代碼即可

Python爬蟲入門 day02

做一個爬蟲如此簡單嗎?

當然不是。讓我們來看下要做一個爬蟲工程師需要哪些知識和技能:

****爬蟲工程師的晉級之路,網絡爬蟲涉及哪些技術

初級爬蟲工程師

1. Web前端的知識:HTML, CSS, JavaScript, DOM, DHTML, Ajax, jQuery,json等;

2. 正則表達式,能提取正常一般網頁中想要的信息,比如某些特殊的文字,鏈接信息,知道什麼是懶惰,什麼是貪婪型的正則;

3. 會使用re, BeautifulSoup,XPath等獲取一些DOM結構中的節點信息;

4. 知道什麼是深度優先,廣度優先的抓取算法,及實踐中的使用規則;

5. 能分析簡單網站的結構,會使用urllib,urllib2或requests庫進行簡單的數據抓取;

中級爬蟲工程師

1. 瞭解什麼是Hash,會使用簡單的MD5,SHA1等算法對數據進行Hash以便存儲;

2. 熟悉HTTP,HTTPS協議的基礎知識,瞭解GET,POST方法,瞭解HTTP頭中的信息,包括返回狀態碼,編碼,user-agent,cookie,session等;

3. 能設置User-Agent進行數據爬取,設置代理等;

4. 知道什麼是Request,什麼是Response,會使用Fiddle, Wireshark等工具抓取及分析簡單的網絡數據包;對於動態爬蟲,要學會分析Ajax請求,模擬製造Post數據包請求,抓取客戶端session等信息,對於一些簡單的網站,能夠通過模擬數據包進行自動登錄;

5. 對於比較難搞定的網站,學會使用phatomjs+selenium抓取一些動態網頁信息;

6. 併發下載,通過並行下載加速數據抓取;多線程的使用;

高級爬蟲工程師

1. 能使用Tesseract,百度AI等庫進行驗證碼識別;

2. 能使用數據挖掘的技術,分類算法等避免死鏈等;1. 會使用常用的數據庫進行數據存儲,查詢,如Mongodb,Redis(大數據量的緩存)等;下載緩存,學習如何通過緩存避免重複下載的問題;Bloom Filter的使用;

2. 能使用機器學習的技術動態調整爬蟲的爬取策略,從而避免被禁IP封號等;

3. 能使用一些開源框架Scrapy,Celery等分佈式爬蟲,能部署掌控分佈式爬蟲進行大規模的數據抓取;

Python爬蟲入門 day02


分享到:


相關文章: