爬蟲理論知識

什么是爬蟲?

就是一段自動抓取互聯(lián)網(wǎng)數(shù)據(jù)的程序或腳本

網(wǎng)頁的三大特性

1.每個網(wǎng)頁都有自己唯一的URL地址(統(tǒng)一資源定位符)
2.網(wǎng)頁都是通過HTML(超文本)展示數(shù)據(jù)的
3.網(wǎng)頁是通過HTTP/HTTPS(超文本傳輸協(xié)議)來傳輸HTML的

爬蟲最基本的步驟

1.尋找目標(biāo)URL地址,發(fā)起請求
2.獲取請求響應(yīng)結(jié)果,分析相應(yīng)結(jié)果
3.從響應(yīng)結(jié)果中提取數(shù)據(jù)

a.第一部分,從網(wǎng)頁中提取的目標(biāo)數(shù)據(jù)
b. 如果存在新的URL地址,則提取,繼續(xù)發(fā)起請求

爬蟲結(jié)束:所有的目標(biāo)URL全部請求完畢,則爬蟲結(jié)束

爬蟲的分類

  • 通用爬蟲,聚焦爬蟲

七層協(xié)議

應(yīng)用層 表示層 會話層 傳輸層 網(wǎng)絡(luò)層 數(shù)據(jù)鏈路層 物理層

應(yīng)用層:http/https
傳輸層:TCP/UDP
TCP:網(wǎng)絡(luò)傳輸協(xié)議,面向連接的,長連接,傳輸?shù)氖菙?shù)據(jù)流
,確保數(shù)據(jù)的安全性和完整性,但是數(shù)據(jù)傳輸?shù)男实?br> UDP:網(wǎng)絡(luò)傳輸協(xié)議,是非面向連接的,短連接,傳輸?shù)氖菙?shù)據(jù)包,
傳輸數(shù)據(jù)是不安全的,可能會造成數(shù)據(jù)的丟失,傳輸速度非常快

http(超文本傳輸協(xié)議,端口號是80)
實現(xiàn)從網(wǎng)絡(luò)傳輸草文本數(shù)據(jù)到本地瀏覽器的傳送協(xié)議

https(端口號是443):是http的安全版本,在http的基礎(chǔ)上添加了一個SSL(安全套階層),用于WEB端的安全傳送,在傳輸層對網(wǎng)絡(luò)進(jìn)行加密
1.構(gòu)建了一個安全的數(shù)據(jù)傳輸通道
2.保證網(wǎng)站的真實性和有效性

常見的請求狀態(tài)碼:

200:請求成功
3xx:重定向 |301永久重定向|302臨時重定向
4xx:客戶端請求錯誤|400請求錯誤,服務(wù)器無法解析|401未授權(quán),沒有進(jìn)行身份驗證|403服務(wù)器拒絕訪問|404訪問的頁面不存在|405請求方式不允許|408請求超時
5xx:服務(wù)器出現(xiàn)錯誤|500服務(wù)器內(nèi)部錯誤|501服務(wù)器暫時不具備完成請求功能|503服務(wù)器不可用

URL介紹

  • URI:統(tǒng)一資源標(biāo)志符
  • URN:統(tǒng)一資源名稱
  • URL:統(tǒng)一資源定位符
  • URI是URN和URL的父類

scheme:指的是協(xié)議(https/http)
host:值得是服務(wù)器的ip或者域名
port:指的是端口號
path:資源路徑
query_string:url地址后面的查詢參數(shù)
anchor(錨點):可以指定要跳轉(zhuǎn)的位置

parse

parse:可以對url進(jìn)行拆分,組合,編碼,解碼,拼接
parse.urlencode():將字典類型的參數(shù)轉(zhuǎn)為url編碼格式
get請求直接使用urlencode將參數(shù)轉(zhuǎn)為url編碼格式
post請求urlencode將參數(shù)轉(zhuǎn)為url編碼格式,然后用encode方法將字符串轉(zhuǎn)為bytes類型
parse.parse_qs():將url編碼格式轉(zhuǎn)化為字典類型
parse.quote():將中文符轉(zhuǎn)為url編碼
parse.unquote():將url編碼的字符轉(zhuǎn)為中文字符
parse.urljoin():將不完整的url參照基類url拼接完整
parse.urlparse():解析url,將url拆分

error

error:在我們請求過程中,可能因為服務(wù)器錯,弱網(wǎng)環(huán)境造成請求失敗,這時我們需要對這些錯誤進(jìn)行處理,不然會造成代碼崩潰
error.URLError:
原因:沒網(wǎng)絡(luò)連接
服務(wù)器連接失敗
找不到指定的服務(wù)器
有一個reason屬性:返回錯誤原因
error.HTTPError:
HTTP請求錯誤
code:請求狀態(tài)碼
reason:返回錯誤原因
headers:返回響應(yīng)頭部

正則

單個字符

字符 功能
. 匹配任意1個字符(除了\n)
[ ] 匹配[ ]中列舉的字符
\d 匹配數(shù)字,即0-9
\D 匹配非數(shù)字,即不是數(shù)字
\s 匹配空白,即 空格,tab鍵
\S 匹配非空白
\w 匹配單詞字符,即a-z、A-Z、0-9、_
\W 匹配非單詞字符

多個字符

字符 功能
* 匹配前一個字符出現(xiàn)0次或者無限次,即可有可無
+ 匹配前一個字符出現(xiàn)1次或者無限次,即至少有1次
? 匹配前一個字符出現(xiàn)1次或者0次,即要么有1次,要么沒有
{m} 匹配前一個字符出現(xiàn)m次
{m,n} 匹配前一個字符出現(xiàn)從m到n次
^ 開頭
$ 結(jié)尾

多字符匹配(非貪婪模式)
(*?)(+?)(??)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基本流程 1.分析網(wǎng)站,尋找目標(biāo)url 2.分析目標(biāo)url參數(shù)(get/post)(1)get請求參數(shù)部分:把?后...
    杰伊_約翰閱讀 244評論 0 0
  • 爬蟲: 平臺或者機構(gòu)不能夠提供我們需要的數(shù)據(jù),這時就需要爬蟲工程師,根據(jù)需求從互聯(lián)網(wǎng)上抓取數(shù)據(jù)? 什么是爬蟲? 就...
    Stranger_I閱讀 381評論 0 1
  • 內(nèi)容簡述: 一:爬蟲概述和學(xué)習(xí)路線 二:協(xié)議和請求方法 三:抓包工具-谷歌瀏覽器 和fiddler安裝及...
    Davis_hang閱讀 1,516評論 0 1
  • 我是一只漂亮的溫順的貓, 我本和主人感情很好。 有一天,主人看到更美的可愛的貓時,他放下了我,去抱那只貓,留下了我...
    素阡閱讀 113評論 0 0
  • 三十三歲的我回憶初戀 最近前任系列刷屏,不管是電影還是影評,還是回憶體散文,都充滿了吃芒果的激動和心酸,還有心絞痛...
    季敖閱讀 412評論 0 1

友情鏈接更多精彩內(nèi)容