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