什么是爬蟲:
爬蟲就是一段自動(dòng)抓取互聯(lián)網(wǎng)的程序和腳本
網(wǎng)頁(yè)的三大特性:
1戳晌、任何網(wǎng)頁(yè)都有自己的唯一的URL地址(統(tǒng)一資源定位符)
2谤专、網(wǎng)頁(yè)都是通過HTML(超文本)來展示數(shù)據(jù)的
3、網(wǎng)頁(yè)都是通過HTTP/HTTPS(超文本傳輸協(xié)議)來傳輸HTML的
爬蟲的基本使用步驟:
1鳖宾、尋找目標(biāo)的URL(統(tǒng)一資源定位器)肖爵,然后發(fā)起請(qǐng)求
2舔哪、獲取響應(yīng)結(jié)果锻离,之后分析結(jié)果
3铺峭、從響應(yīng)結(jié)果中提取我們所需要的數(shù)據(jù)
(1)、從網(wǎng)頁(yè)中提取目標(biāo)數(shù)據(jù)
(2)汽纠、如果還有新的url
地址卫键,則提取,繼續(xù)發(fā)起請(qǐng)求
4虱朵、所有的目標(biāo)url
都請(qǐng)求完畢后莉炉,爬蟲結(jié)束
數(shù)據(jù)用途:
1、爬取數(shù)據(jù)后自己寫個(gè)網(wǎng)站
2碴犬、日常數(shù)據(jù)分析
爬蟲的分類:(通用爬蟲絮宁、聚焦爬蟲)
通用爬蟲:
是搜索引擎的重要組成部分
作用:
通過分詞,去噪等進(jìn)行頸處理服协,處理后進(jìn)行數(shù)據(jù)的持久化绍昂,然后提取搜索
目的:
盡可能完全的將互聯(lián)網(wǎng)上所有的網(wǎng)頁(yè)下載到本地
聚焦爬蟲:
是面向主題,面向需求的爬蟲偿荷,只獲取需求相關(guān)的數(shù)據(jù)
搜索引擎的缺點(diǎn):
1窘游、只能夠獲取簡(jiǎn)單的文件數(shù)據(jù),大型的二進(jìn)制數(shù)據(jù)(音頻遭顶,視頻)
2张峰、搜索引擎搜索的結(jié)果都千篇一律,無(wú)法根據(jù)需求獲取特定的數(shù)據(jù)
3棒旗、99%的結(jié)果都是屬于無(wú)用的垃圾數(shù)據(jù)
OSI的七層協(xié)議的目的:
實(shí)現(xiàn)不同的系統(tǒng)互聯(lián)之間的數(shù)據(jù)通訊喘批,實(shí)現(xiàn)數(shù)據(jù)的傳輸
七層協(xié)議:
應(yīng)用層,表示層铣揉,會(huì)話層饶深,傳輸層,網(wǎng)絡(luò)層逛拱,數(shù)據(jù)鏈路層敌厘,物理層
應(yīng)用層:http/htttps
- http(端口號(hào)為 80):從網(wǎng)絡(luò)傳輸超文本數(shù)據(jù)到本地瀏覽器的傳輸協(xié)議
- https(端口號(hào)為 443):是HTTP的升級(jí)安全版,在HTTP的基礎(chǔ)上添加了一個(gè)SSL層朽合,用于安全傳輸
傳輸層:TCP/UDP
- TCP:網(wǎng)絡(luò)傳輸協(xié)議俱两,面向連接的,長(zhǎng)連接曹步,傳輸?shù)氖菙?shù)據(jù)流宪彩,確保數(shù)據(jù)的安全性和完整性,但傳輸?shù)男史浅5牡?/li>
- UDP:網(wǎng)絡(luò)傳輸協(xié)議讲婚,是非面向連接的尿孔,短鏈接,傳輸?shù)氖菙?shù)據(jù)包,傳輸數(shù)據(jù)是不安全的活合,可能會(huì)造成數(shù)據(jù)的缺失雏婶,傳輸?shù)乃俣确浅??/li>
URL的介紹
URL的組成:
- scheme:指的是協(xié)議(http/https)
- host:指的是服務(wù)器的IP后域名
- port:值得是端口號(hào)
- path:指的是資源路徑
- query_string:URL地址后面的查詢參數(shù)
- anchor(錨mao點(diǎn)) :定位白指,可以跳到制定的位置
URN:統(tǒng)一資源名稱
URI:統(tǒng)一資源標(biāo)志符
URL:統(tǒng)一資源定位符URI是URN和URL的父類
常見的5種請(qǐng)求方式
GET:只適用于服務(wù)器獲取請(qǐng)求留晚,在URL連接后面可能會(huì)跟一些查詢參數(shù)
POST:向服務(wù)器端提交數(shù)據(jù),數(shù)據(jù)會(huì)放在請(qǐng)求體中告嘲,一般用于添加或修改數(shù)據(jù)
DELETE:一般用來刪除數(shù)據(jù)
PUT:更新整個(gè)資源(用來數(shù)據(jù)更新)
PATCH:局部的數(shù)據(jù)更新
GET
和POST
的請(qǐng)求區(qū)別
- 使用場(chǎng)景:GET是從服務(wù)器端提取數(shù)據(jù)倔丈,而POST是請(qǐng)求向服務(wù)器提交數(shù)據(jù)的
- 安全性:GET請(qǐng)求參數(shù)只能拼接在URL地址上,POST請(qǐng)求會(huì)在請(qǐng)求體中
- GET請(qǐng)求的URL是由長(zhǎng)度限制的状蜗,而POST的請(qǐng)求可以添加很多字段
常見的請(qǐng)求頭參數(shù)
User-Agent:這是設(shè)置瀏覽器(設(shè)置這個(gè)參數(shù)模擬瀏覽器請(qǐng)求對(duì)方服務(wù)器)
Cookie:保存在客戶端中,保存的是用戶信息
Referer:告訴客戶端服務(wù)器當(dāng)前的請(qǐng)求書從哪個(gè)界面跳轉(zhuǎn)過來的
Accept:可以接受的數(shù)據(jù)類型
Cookie
和Session
:目的都是保持會(huì)話
- HTTP:請(qǐng)求是無(wú)狀態(tài)的鹉动,每次請(qǐng)求斷開后轧坎,在請(qǐng)求都是一個(gè)新的請(qǐng)求,請(qǐng)求狀態(tài)會(huì)使用到Cookie和Session
- Cookie:保存在客戶端泽示,記錄信息確認(rèn)用戶身份
- Session:保存在服務(wù)端缸血,記錄信息確認(rèn)用戶身份
常見的請(qǐng)求狀態(tài)碼:
2XX:請(qǐng)求成功
3XX:重定向
- 301:永久重定向
- 302:臨時(shí)重定向
4XX:客戶端請(qǐng)求錯(cuò)誤 - 400:請(qǐng)求錯(cuò)誤,服務(wù)器無(wú)法解析
- 401:未授權(quán)械筛,沒有身份驗(yàn)證
- 403:服務(wù)器拒絕訪問
- 404:訪問頁(yè)面不存在捎泻,資源路徑錯(cuò)誤
- 405:請(qǐng)求方式不允許
- 408:請(qǐng)求超時(shí)
5XX:服務(wù)器錯(cuò)誤 - 501:服務(wù)器內(nèi)部錯(cuò)誤
- 502:服務(wù)器暫時(shí)不具備完成請(qǐng)求的功能
- 503:服務(wù)器不可用
關(guān)于urllib中request,error埋哟,parse模塊的使用
request:是基本的HTTP請(qǐng)求模塊笆豁,可以用來模擬發(fā)送請(qǐng)求,就像在瀏覽器中輸入完網(wǎng)址赤赊,后敲回車一樣闯狱,使用時(shí)只需要給庫(kù)方法傳入相關(guān)的URL和相關(guān)的參數(shù)就可以了
error:異常處理模塊,如果請(qǐng)求錯(cuò)誤抛计,可以使用這個(gè)模塊來捕獲異常哄孤,然后重試后其他操作,保證陳旭不會(huì)意外終止
parse:是一個(gè)工具模塊吹截,提供了很多的URL的處理方法瘦陈,如拆分,解析波俄,合并等
正則的使用及說明:
應(yīng)為我們down下來的數(shù)據(jù)全是網(wǎng)頁(yè)晨逝,數(shù)據(jù)太大而且還很混亂,大多數(shù)都是無(wú)用的數(shù)據(jù)弟断,所以我們需要過濾和匹配出我們所需要的數(shù)據(jù)
- 正則表達(dá)式:別名正規(guī)表達(dá)式咏花,正規(guī)表達(dá)法,規(guī)則表達(dá)式,常規(guī)表達(dá)法昏翰,正規(guī)表達(dá)式使用單個(gè)字符來描述苍匆、匹配一系列某個(gè)句法規(guī)則的字符串
目的:
1.給定的字符串判斷是否符合正則表達(dá)式的邏輯過濾
2.可以通過正則表達(dá)式,從字符串中捕捉或獲取我們所需要的特定部分
正則表達(dá)式語(yǔ)法支持情況
正則表達(dá)式匹配的規(guī)則如下:
將正則表達(dá)式編譯使用符號(hào)
修飾符號(hào) | 描述 |
---|---|
re.I | 使用匹配對(duì)大小寫不敏感(不區(qū)分大小寫) |
re.S | 使.匹配包括換行符在內(nèi)的所有字符 |
re.M | 多行匹配 |
re.L | 做本地化識(shí)別 |
常用方法主要有:
- match 方法:從起始位置開始查找棚菊,一次匹配
- search 方法:從任何位置開始查找浸踩,一次匹配
- findall 方法:全部匹配,返回列表
- finditer 方法:全部匹配统求,返回迭代器
- split 方法:分割字符串检碗,返回列表
- sub 方法:替換