爬虫概念
1.什么是爬蟲。
互聯網:由網絡設備(網線,路由器,交換機,防火墻)和一臺臺計算機連接而成,像一張網一樣。
互聯網建立目的:互聯網的核心價值在與數據的共享/傳遞:數據是存放在一臺臺機器上,將計算機聯到一起的目的為了能方便彼此之間的數據共享/傳遞,否則你只能拿U盤去別人的計算機上拷貝數據。
爬蟲概念
爬蟲就是通過編寫程序模擬瀏覽器上網,然后讓其去互聯網上抓取數據的過程。
爬蟲分類
-
通用爬蟲:爬取整個頁面源碼數據,抓取數據
-
聚焦爬蟲:爬取一個頁面中局部的數據(數據解析),也就是有用的數據
-
增量式爬蟲:用于檢測網站數據更新的情況,從而爬取網站中最新更新出來的數據
爬蟲意義
互聯網中最有價值的便是數據,比如天貓商城的商品信息,鏈家網的租房信息,雪球網的證券投資信息等等,這些數據都代表了各個行業的真金白銀,可以說,誰掌握了行業內的第一手數據,誰就成了整個行業的主宰。
robots.txt協議
如果自己的門戶網站中的指定頁面中的數據不想讓爬蟲程序爬取到的話,那么則可以通過編寫一個robots.txt的協議文件來約束爬蟲程序的數據爬取。robots協議的編寫格式可以觀察淘寶網的robots(訪問www.taobao.com/robots.txt即可)。
但是需要注意的是,該協議只是相當于口頭的協議,并沒有使用相關技術進行強制管制,所以該協議是防君子不防小人。但是我們在學習爬蟲階段編寫的爬蟲程序可以先忽略robots協議。
反爬蟲
門戶網站通過相應的策略和技術手段,防止爬蟲程序進行網站數據的爬取。
反反爬蟲
爬蟲程序通過相應的策略和技術手段,破解門戶網站的反爬蟲手段,從而爬取到相應的數據。
2.爬蟲的基本流程。
1.發起請求:
使用http庫向目標站點發起請求,即發送一個request,包含:請求頭、請求體
2.獲取相應內容:
如果服務器能正常響應,則會得到一個Response,包含:html,json,圖片,視頻
3.解析內容:
解析html數據:正則表達式,第三方解析庫如Beautiful,xpath,pyquery等。
解析json數據:json模塊
解析二進制數據:以b的方式寫入文件
4.保存數據
數據庫,文件
3.request請求
1.請求方式
常用請求方式:GET,POST
其他請求方式:HEAD,PUT,DELETE,OPTHONS
post與get請求最終都會拼接成這種形式:k1=xxx&k2=yyy&k3=zzz
-
post請求的參數放在請求體內:可用瀏覽器查看,存放于form data內。
-
get請求的參數直接放在url后。
2.請求url
url全稱統一資源定位符,如一個網頁文檔,一張圖片,一個視頻等都可以用url唯一來確定。
網頁的加載過程是:?加載一個網頁,通常都是先加載document文檔,在解析document文檔的時候,遇到鏈接,則針對超鏈接發起下載圖片的請求。
3.請求頭
User-Agent:請求載體的身份標識
Connection:close連接方式
content-type:響應數據類型
Referer:上一次的跳轉路徑
4.請求體
如果是get方式,請求體沒有內容。
如果是post方式,請求體是format data。
-
登錄窗口,文件上傳等,信息都會被附加到請求體內
-
登錄,輸入錯誤的用戶名密碼,然后提交,就可以看到post,正確登錄后頁面通常會跳轉,無法捕捉到post
4.Response響應
1.響應狀態
-
200:代表成功
-
301:代表跳轉
-
404:文件不存在
-
403:權限
-
502:服務器錯誤
2.Response header
-
location:跳轉
-
set-cookie:可能有多個,告訴瀏覽器,把cookie保存下來
3.preview
最主要的部分,包含了請求資源的內容,如html,圖片等
二、http協議相關
http協議更多相信見
這里就簡單回顧一下。
1.http協議
1.官方概念:HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。聽爛了的概念
2.自述概念:HTTP協議就是服務器(Server)和客戶端(Client)之間進行數據交互(相互傳輸數據)的一種形式。
2.http協議工作原理
HTTP協議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。
3.http之url
HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。URL是一種特殊類型的URI,包含了用于查找某個資源的足夠的信息
URL,全稱是UniformResourceLocator, 中文叫統一資源定位符,是互聯網上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
從上面的URL可以看出,一個完整的URL包括以下幾部分:
-
協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在"HTTP"后面的“//”為分隔符
-
域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用
-
端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口
-
虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”
-
文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名
-
錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分
-
參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。
三、https協議相關
1.https協議
1.官方概念:HTTPS (Secure Hypertext Transfer Protocol)安全超文本傳輸協議,HTTPS是在HTTP上建立SSL加密層,并對傳輸數據進行加密,是HTTP協議的安全版。
2.自述概念:加密安全版的http協議
2.https加密技術
1.ssl對稱加密技術
SSL采用的加密技術叫做“共享密鑰加密”,也叫作“對稱密鑰加密”。
加密過程:
客戶端向服務器發送一條信息,首先客戶端會采用已知的算法對信息進行加密,比如MD5或者Base64加密,接收端對加密的信息進行解密的時候需要用到密鑰,中間會傳遞密鑰,(加密和解密的密鑰是同一個),密鑰在傳輸中間是被加密的。
缺點:
這種方式看起來安全,但是仍有潛在的危險,一旦被竊聽,或者信息被挾持,就有可能破解密鑰,而破解其中的信息。因此“共享密鑰加密”這種方式存在安全隱患
2.非對稱加密技術
加密過程:
“非對稱加密”使用的時候有兩把鎖,一把叫做“私有密鑰”,一把是“公開密鑰”,使用非對象加密的加密方式的時候,服務器首先告訴客戶端按照自己給定的公開密鑰進行加密處理,客戶端按照公開密鑰加密以后,服務器接受到信息再通過自己的私有密鑰進行解密,這樣做的好處就是解密的鑰匙根本就不會進行傳輸,因此也就避免了被挾持的風險。
就算公開密鑰被竊聽者拿到了,它也很難進行解密,因為解密過程是對離散對數求值,這可不是輕而易舉就能做到的事。
缺點:
-
如何保證接收端向發送端發出公開秘鑰的時候,發送端確保收到的是預先要發送的,而不會被挾持。只要是發送密鑰,就有可能有被挾持的風險。
-
非對稱加密的方式效率比較低,它處理起來更為復雜,通信過程中使用就有一定的效率問題而影響通信速度
3.https證書機制
數字證書認證機構是客戶端與服務器都可信賴的第三方機構。
證書的具體傳播過程如下:
-
服務器的開發者攜帶公開密鑰,向數字證書認證機構提出公開密鑰的申請,數字證書認證機構在認清申請者的身份,審核通過以后,會對開發者申請的公開密鑰做數字簽名,然后分配這個已簽名的公開密鑰,并將密鑰放在證書里面,綁定在一起。
-
服務器將這份數字證書發送給客戶端,因為客戶端也認可證書機構,客戶端可以通過數字證書中的數字簽名來驗證公鑰的真偽,來確保服務器傳過來的公開密鑰是真實的。一般情況下,證書的數字簽名是很難被偽造的,這取決于認證機構的公信力。
?
轉載于:https://www.cnblogs.com/yhq123/p/11300140.html
總結
- 上一篇: 正则表达式限制文本框只能输入数字,小数点
- 下一篇: oh-my-zsh 功能收集