爬蟲學習筆記(二)
引言
第二部分內(nèi)容,主要是介紹一些爬蟲原理以及網(wǎng)頁的基礎知識
1.HTTP原理
概念
1.URI,URL
uniform resource identifier,統(tǒng)一資源標志符
uniform resource locator,統(tǒng)一資源定位符
2.超文本hypertext
超鏈接文本
3.HTTP,HTTPS
hyper text transfer protocol,超文本傳輸協(xié)議http
將超文本數(shù)據(jù)從網(wǎng)絡傳輸?shù)奖镜氐膫魉蛥f(xié)議。
https,則是http的安全版本,加入了secure socket layer層,即ssl層。
2.http請求過程
客戶端向服務器發(fā)送請求有4部分:請求方法(method),請求地址(url),請求頭(header),請求體(body)
請求方法
get
url中包含請求參數(shù);最多1024字節(jié)post
需要登陸之類的請求用post,由于數(shù)據(jù)通過表單傳輸,不會體現(xiàn)在url中;字節(jié)無限制
原因:需要登陸的包含用戶賬號密碼等敏感信息,用get請求會暴露在url中;上傳較大文件也用post請求。
請求地址
請求頭
常用請求頭:
1.host-主機ip和端口號
2.cookie-維持當前訪問會話,比如每次等登陸狀態(tài)服務器都能識別。
3.user-agent-服務器識別客戶的操作系統(tǒng)、瀏覽器之類的版本信息。
4.content-type-互聯(lián)網(wǎng)媒體類型,請求中的文件類型。
請求體
只用于post請求表單數(shù)據(jù),get請求為空。
響應
1.響應狀態(tài)碼
表示服務器響應狀態(tài),200-正常,404-頁面未找到,500-服務器內(nèi)部錯誤
常見的響應錯誤及原因,可以參考這篇博文。
2.響應頭
3.響應體
網(wǎng)頁的源代碼
2.網(wǎng)頁基礎知識
組成
主要有:html,css,javascript;分別對應-骨架、皮膚、肌肉
1.html
超文本標記語言(hyper text markup language),用于描述網(wǎng)頁的語言
img-圖片;video-視頻,p-段落,div-布局標簽。
關于html基礎,可以參考這邊w3school-html教程。
2.css
層疊式樣式表(cascading style sheets),決定網(wǎng)頁字大小、顏色、元素間距、排列等。
用link標簽引入
3.javascript
幫助用戶實現(xiàn)動態(tài)交互等頁面功能,比如:下載進度條、提示框等。
用script標簽引入。
所以html定義網(wǎng)頁內(nèi)容和結構,css描述網(wǎng)頁布局,JavaScript定義網(wǎng)頁行為。
結構
doctype-定義文檔類型
html標簽要閉合
<meta charset="utf-8">定義了網(wǎng)頁編碼
一般結構是html標簽嵌套head和body標簽,head用于定義網(wǎng)頁配置和引用,body用于定義網(wǎng)頁正文。
節(jié)點樹及節(jié)點間的關系
dom(document object model),文檔對象模型。
節(jié)點樹,節(jié)點關系-父(parent),子(child),兄弟(sibling)
href-屬性、a-超鏈接
選擇器
用于定位節(jié)點的工具
3.爬蟲基本原理
javascript渲染頁面
抓取頁面時源碼和瀏覽器內(nèi)容不同,是由于網(wǎng)頁使用ajax或者JavaScript渲染得到的。網(wǎng)頁會先加載html,然后加載JavaScript代碼,得到完整界面。
會話和cookies
靜態(tài)和動態(tài)網(wǎng)頁
靜態(tài):加載快、簡單、可維護性差
動態(tài):靈活多變
保持http連接狀態(tài)
會話和cookies,cookies里保存了登陸憑著,下次請求攜帶cookies無需重新登陸。將登陸后獲取的cookies放入請求頭,可以直接請求。關于會話和cookies可以看這篇博文
- 會話機制:cookies在客戶端記錄信息,確定身份;session在服務器端記錄信息,確定身份。
4.代理基本原理
使用代理可以偽裝ip,防止由于單位時間內(nèi)訪問次數(shù)太大而被封ip的情況發(fā)生。
簡言之就是客戶端和服務器之間的中轉(zhuǎn)站。