爬蟲技術棧點

爬蟲相關

爬蟲的概念

爬蟲的工做原理

HTTP

  • HTTP工做原理
網絡爬蟲爬取過程能夠理解爲,模擬瀏覽器操做的過程。
瀏覽器的主要功能是向服務器發送請求,在瀏覽器窗口中展現你選擇的網絡資源,HTTP是一套計算機經過網絡進行通訊的規則。
  • HTTP的請求與響應
HTTP通訊由兩部分組成:客服端請求消息與服務端響應消息
  • 瀏覽器發送HTTP請求的過程
1.當用戶在瀏覽器的地址欄中輸入一個URL並按回車鍵以後,瀏覽器會向HTTP服務器發送HTTP請求。HTTP請求主要分爲兩種"GET"和"POST"。

2.當咱們在瀏覽器輸入URL https://www.baidu.com的時候,瀏覽器發送一個Request請求去獲取https://www.baidu.com的html文件,服務器把Response文件發送給瀏覽器。
        
3.瀏覽器分析Response中的HTML,發現其中引用了不少其餘文件,好比Image文件,CSS文件,JS文件,瀏覽器會自動再次發送Request去獲取圖片,CSS文件,或者JS文件。

4.當全部文件都下載成功後,網頁會根據HTML語法解構,完整的顯示出來了。URL:統一資源定位符,是用與完整地internet上網頁和其餘資源的地址的一種標識方法。
基本合適以下;
	1.scheme:協議(如:http,https,ftp)
    2.bost:服務器的IP地址或域名
    3.port:霧浮起的端口(若是是走協議默認端口,缺省端口80)
    4.path:訪問資源的路徑
    5.query-string:參數,發送給http服務器的數據
    6.anchor;錨(跳轉到網頁的指定錨點位置)

爬蟲知識站

1.Python的基本語法知識(已經搞定)

2.如何爬取HTML頁面:
    HTTP請求的處理,urllib,urllib2,requests
    處理後的請求能夠模擬瀏覽器發送請求,獲取服務器響應的文件
    
3.解析服務器響應的內容
	re,xpath,BeautifulSoup4(bs4),jsonpath,pyquery等
    使用某種描述性同樣的來給咱們須要提取的數據定義一個匹配規則,
    符合這個規則的數據就會被匹配。
    
4.如何採集動態HTML,驗證碼的處理
	經過動態頁面採集:Selenium + PhantomJS(無界面):模擬真實瀏覽器加載js,ajax等非靜態頁面數據。
     Tesseract:機器學習庫,機器圖像識別系統,能夠處理 簡單的驗證碼,複雜的驗證碼能夠經過手動輸入/專門的打碼平臺去處理。
    
5.Scrapy框架:(Scrapy,Pyspider)
	高定製性高性能(異步網絡框架twisted),因此數據下載速度很是快,提供了數據存儲數據下載還有提取規則等組件,規則就是xpath。
    
6.分佈式策略:(中小型公司用不到這麼大的,人員成本機器成本是否大與經濟成本)
	scrapy-redis,在Scrpay的基礎上添加了一套以以Redis數據庫爲核心的一套組件。
    讓Scrapy框架支持分佈式的功能,主要在Redis裏面作請求指紋去重(若是爬整站,須要用分佈式,不一樣的線程爬蟲要爬取不一樣的頁面,作到批量分佈式去重),請求分配,數據臨時存儲。
    
    
7.爬蟲————反爬蟲————反反爬蟲之間的鬥爭:
	(爬蟲最後最難的不是複雜頁面的獲取,晦澀數據的採集,難的是跟網站後臺人員鬥智鬥勇)
    最先反爬用的是User-Agent,(一秒鐘多少點擊),用代理,驗證碼,(不是全部都是12306的),動態數據加載,加密數據(數據加密有馬腳,核心密鑰會存在js腳本里面),不少到代理這一塊就能夠了。
    數據價值,是否值得去費勁作反爬蟲。
    1.機器成本	+	人力成本  >  數據價值,就不反了,通常作到封IP就結束了。
    2.面子戰爭.....
    爬蟲和反爬蟲之間的鬥爭,不少時候是爬蟲獲勝!
    爲何?只要是真實用戶能夠瀏覽的網頁數據,爬蟲就必定能爬下來。

根據使用場景對爬蟲分類

通用爬蟲

1.通用爬蟲:搜索引擎用的爬蟲系統。
1.1目標:就是儘量的把網上的全部頁面下載下來,放到本地服務器裏面造成備份
	 再對這些頁面作相關處理(提取關鍵字,去掉廣告),最後提供一個用戶檢索接口。(百度快照就是拿其餘網頁的數據,提取關鍵字,在本身數據庫裏面作備份)
#提供網頁用戶接口,可是通用引擎爬蟲,最大的缺陷就是不能把圖片,視頻拿出來。
2.抓取流程:
    a.首先選取一部分已有的URL,把這些URL放到待爬取隊列。
    b.從隊列裏取出這些URL,而後解析DNS獲得主機IP,一個域名必定會對應一個ip地址,一個ip地址不必定有域名。而後取這個IP對應的服務器裏下載HTML頁面,保存到搜索引擎的本地服務器裏。
	最後把這個爬取過的URL放入已爬取隊列。
    c.分析這些網頁內容,找到網頁裏其餘的URL連接,繼續執行第二步,直到爬取條件結束。
    順便帶一下:
瀏覽器打開百度百度後臺發生了什麼?要求從協議層的角度來講,不是tcp,ip是http協議角度來講:
    http,https,ftp這三個都是創建在TCP,IP協議基礎上的,講到前三個協議默認TCP,IP協議是成功的。
    若是在百度上回車敲一個電影,首先他會把電影地址發送到DNS服務商作解析,DNS就是把域名解析成IP的一種技術。
    #若是你在cmd命令太直接數據"ping www.baidu.com"他會給出ping地址"182.61.200.7",把這個ping放到瀏覽器上它也能到百度首頁,每臺機器的ping值不一樣,這樣就不通過DNS服務商作解析了。
   
3.搜索引擎是如何獲取一個新網站的URL(三種方式):
	1.主動向搜索引擎提交這個網址。去(zhanzhnag.baidu.com/linksumit/url)提交,後臺審覈以後再去添加。
    2.在其餘網站設置網站的外鏈,如(網站上的友情外鏈)
    3.搜索引擎會和DNS服務商進行合做,能夠快速收錄新的網站。(由於新網站必定會有人去提交)
    
4.通用爬蟲並非萬物皆可爬,它也須要遵照必定的規則:
	Robots協議:協議會指明通用爬蟲能夠爬取頁面的權限。
    Robots.txt只是一個建議,並非全部爬蟲都遵照,通常只有大型的搜索引擎爬蟲纔會遵照,
    我的寫的爬蟲就無論它了,防君子不防小人。若是被其餘網站發現,能夠會告侵權。
  
5.通用爬蟲的工做流程:爬取網頁	存儲數據	內容處理	提供檢索/排名服務

6.搜素引擎排名:
	1.PageRank值:根據網站的流量(點擊量/瀏覽量/人其)統計,流量越高排名越靠前,網站也越值錢。
    2.競價排名:誰給錢多,誰排名就越高。(可能查詢,也可能不查詢)
    
7.通用爬蟲的缺點:
	1.只能提供文本相關的內容(HTML,WORD,PDF)等等,可是不能提供更多媒體文件(音樂,圖片,視頻)和二進制文件(程序啊,腳本啊)
    2.提供的結果千篇一概,不能針對不一樣領域的人提供不一樣的搜索結果。
    3.不能理解人類語義上的檢索。
這樣就誕生了聚焦爬蟲

聚焦爬蟲

聚焦爬蟲:爬蟲程序員寫的針對某種內容的爬蟲。
面向主題爬蟲,面向需求爬蟲:會針對某種特定的內容去爬取信息,並且會保證信息和需求進可能相關。
相關文章
相關標籤/搜索