1.數(shù)據(jù)的來(lái)源
1)用戶自行產(chǎn)生
2)去第三方的公司購(gòu)買數(shù)據(jù)
3)去免費(fèi)的數(shù)據(jù)網(wǎng)站下載數(shù)據(jù)
4)人工收集數(shù)據(jù)
5)爬蟲獲取
2.什么是爬蟲
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人)就是模擬瀏覽器發(fā)送網(wǎng)絡(luò)請(qǐng)求,接收請(qǐng)求響應(yīng),一種按照一定的規(guī)則,自動(dòng)地抓取互聯(lián)網(wǎng)信息的程序。原則上,只要是瀏覽器(客戶端)能做的事情,爬蟲都能夠做
3.爬蟲的分類
根據(jù)被爬網(wǎng)站的數(shù)量的不同,我們把爬蟲分為:
通用爬蟲 :通常指搜索引擎的爬蟲(https://www.baidu.com)
聚焦爬蟲 :針對(duì)特定網(wǎng)站的爬蟲
4 . 爬蟲的流程
1. url
2. 發(fā)送請(qǐng)求獲取響應(yīng)
3. 對(duì)響應(yīng)進(jìn)行提取
a. 如果提取的是url,就重復(fù)步驟2
b. 如果提取的是數(shù)據(jù),就保存入庫(kù)
5. 大象裝冰箱分幾步
外匯分析師/tupian/20230522/p
爬蟲爬取數(shù)據(jù)的流程和將大象裝進(jìn)冰箱的流程相似:
class 冰箱
屬性:門 =
東西s = [大象,]
def open門
class 大象
1.冰箱門打開
冰箱a = 冰箱()
冰箱a.open門()
2.大象放進(jìn)冰箱
具體再去完善冰箱的大小以及大象放進(jìn)去的方法
3.冰箱們關(guān)上
冰箱a.close門()
6.robots協(xié)議
Robots協(xié)議:網(wǎng)站通過(guò)Robots協(xié)議告訴搜索引擎哪些頁(yè)面可以抓取,哪些頁(yè)面不能抓取,但它僅僅是互聯(lián)網(wǎng)中的一般約定,可以忽略,例如:(/tupian/20230522/error.html
7.http,和https的概念
復(fù)習(xí)的必要性:在發(fā)送請(qǐng)求,獲取響應(yīng)的過(guò)程中 就是發(fā)送http或https的請(qǐng)求,獲取http或https的響應(yīng)
HTTP:
超文本傳輸協(xié)議,默認(rèn)端口號(hào):80
HTTPS:
HTTP + SSL(安全套接字層),即帶有安全套接字層的超本文傳輸協(xié)議,默認(rèn)端口號(hào):443
HTTPS比HTTP更安全,但是性能更低
8.瀏覽器的工作原理
http請(qǐng)求的過(guò)程
1)瀏覽器先向地址欄中的url發(fā)起請(qǐng)求,并獲取相應(yīng)
2)在返回的響應(yīng)內(nèi)容(html)中,會(huì)帶有css、js、圖片等url地址,以及ajax代碼,瀏覽器按照響應(yīng)內(nèi)容中的順序依次發(fā)送其他的請(qǐng)求,并獲取相應(yīng)的響應(yīng)
3)瀏覽器每獲取一個(gè)響應(yīng)就對(duì)展示出的結(jié)果進(jìn)行添加(加載),js,css等內(nèi)容會(huì)修改頁(yè)面的內(nèi)容,js也可以重新發(fā)送請(qǐng)求,獲取響應(yīng)
4)從獲取第一個(gè)響應(yīng)并在瀏覽器中展示,直到最終獲取全部響應(yīng),并在展示的結(jié)果中添加內(nèi)容或修改————這個(gè)過(guò)程叫做瀏覽器的渲染
注意:
但是在爬蟲中,爬蟲只會(huì)請(qǐng)求url地址,對(duì)應(yīng)的拿到url地址對(duì)應(yīng)的響應(yīng)(該響應(yīng)的內(nèi)容可以是html,css,js,圖片等),瀏覽器渲染出來(lái)的頁(yè)面和爬蟲請(qǐng)求的頁(yè)面很多時(shí)候并不一樣,所以在爬蟲中,需要以u(píng)rl地址對(duì)應(yīng)的響應(yīng)為準(zhǔn)來(lái)進(jìn)行數(shù)據(jù)的提取
理解瀏覽器的工作原理之后,要知道一下倆點(diǎn):
1)多次響應(yīng)的結(jié)果 就意味著 有多次請(qǐng)求(瀏覽器最終顯示的結(jié)果是由多次請(qǐng)求對(duì)應(yīng)的多次響應(yīng)共同渲染的結(jié)果)
2)爬蟲是以發(fā)送一次請(qǐng)求對(duì)應(yīng)的響應(yīng)為準(zhǔn),來(lái)提取數(shù)據(jù)2.爬蟲是以發(fā)送一次請(qǐng)求對(duì)應(yīng)的響應(yīng)為準(zhǔn),來(lái)提取數(shù)據(jù)
9. 爬蟲關(guān)注的常見請(qǐng)求頭
User-Agent 用戶代理
Referer 面包屑
Cookie
http常見請(qǐng)求頭:
Host (主機(jī)和端口號(hào))
Connection (鏈接類型)
Upgrade-Insecure-Requests (升級(jí)為HTTPS請(qǐng)求)
User-Agent (瀏覽器名稱)
Accept (傳輸文件類型)
Referer (頁(yè)面跳轉(zhuǎn)處)
Accept-Encoding(文件編解碼格式)
Cookie (Cookie)
x-requested-with :XMLHttpRequest (表示該請(qǐng)求是Ajax異步請(qǐng)求)
10. 爬蟲關(guān)注的響應(yīng)頭
Set-Cookie 后端一次向客戶端set一條cookie
在響應(yīng)中 可以set多次cookie;客戶端最多保存20條cookie
11.響應(yīng)狀態(tài)碼
200:成功
302:臨時(shí)轉(zhuǎn)移至新的url
307:臨時(shí)轉(zhuǎn)移至新的url
404:找不到該頁(yè)面
500:服務(wù)器內(nèi)部錯(cuò)誤
503:服務(wù)不可用,一般是被反爬
12.字符串相關(guān)的復(fù)習(xí)
python3中兩種字符串類型:
str : unicode的呈現(xiàn)形式
bytes :字節(jié)類型,互聯(lián)網(wǎng)上數(shù)據(jù)的都是以二進(jìn)制的方式(字節(jié)類型)傳輸?shù)?
關(guān)于bytes的拓展閱讀:https://segmentfault.com/a/1190000004450876
UTF-8是Unicode的實(shí)現(xiàn)方式之一
str和bytes類型的互相轉(zhuǎn)換:
string --> bytes
encode()
bytestring -->str
decode(‘utf8’) # ascii gbk gb2312 iso-8859-1
編碼方式解碼方式必須一樣,否則就會(huì)出現(xiàn)亂碼
‘你好嗎’.encode()–> b’你好嗎’
b’你好嗎’.decode(‘a(chǎn)scii’) --> 亂碼!
b’你好嗎’.decode(‘utf8’) --> 正常顯示
本文題目:學(xué)習(xí)爬蟲必須學(xué)的基礎(chǔ)知識(shí)-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.rwnh.cn/article44/cehcee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、標(biāo)簽優(yōu)化、微信公眾號(hào)、用戶體驗(yàn)、Google、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容