小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python爬蟲應(yīng)用指南之基礎(chǔ)知識(shí)

 開源優(yōu)測 2023-02-24 發(fā)布于廣東

下方查看歷史精選文章

重磅發(fā)布 - 自動(dòng)化框架基礎(chǔ)指南pdfv1.1
大數(shù)據(jù)測試過程、策略及挑戰(zhàn)

測試框架原理,構(gòu)建成功的基石

在自動(dòng)化測試工作之前,你應(yīng)該知道的10條建議

在自動(dòng)化測試中,重要的不是工具

Python適合在諸多領(lǐng)域的應(yīng)用,作為軟件測試從業(yè)者,具備一定的自動(dòng)化測試基礎(chǔ),再去開展Python爬蟲工程應(yīng)用是更加有優(yōu)勢的。

本系列《Python爬蟲應(yīng)用指南》為筆者結(jié)合多年自動(dòng)化測試實(shí)踐,結(jié)合未來自動(dòng)化測試發(fā)展而編寫的系列文章,主要梳理筆者在學(xué)習(xí)和工作中實(shí)踐爬蟲技術(shù)的精華集合。

本文主要從以下幾個(gè)方面來說明基于Python實(shí)踐爬蟲技術(shù):

  • HTTP協(xié)議基礎(chǔ)

  • Web頁面結(jié)構(gòu)

  • 爬蟲基本原理

  • Session和Cookie基礎(chǔ)

  • 代理基本原理

HTTP協(xié)議基礎(chǔ)

你可以通過之前發(fā)布的《從零開始理解HTTP協(xié)議及報(bào)文分析》來深入學(xué)習(xí)HTTP協(xié)議,這篇文章有助于你從HTTP機(jī)制和報(bào)文結(jié)構(gòu)方面深入理解什么是HTTP協(xié)議。

本節(jié)就HTTP2.0進(jìn)行介紹,方便大家進(jìn)一步了解HTTP的發(fā)展歷史和特性。

HTTP2.0發(fā)布于2015年,相對HTTP1.1來說,HTTP2.0更快、更簡單、更穩(wěn)定。尤其是在傳輸層做了大量的優(yōu)化,HTTP2.0的主要目標(biāo)是:改進(jìn)傳輸性能,實(shí)現(xiàn)低延遲和高吞吐量。

由于HTTP2.0內(nèi)部實(shí)現(xiàn)了新的二進(jìn)制分幀層,與之前的HTTP1.0/HTTP1.2不兼容了,這個(gè)是大家要重點(diǎn)注意的地方。

二進(jìn)制分幀層

HTTP2.0的核心特性就在于這個(gè)新實(shí)現(xiàn)的二進(jìn)制分幀層,在HTTP1.X中,不管是請求(request)還是響應(yīng)(response),都是基于文本格式傳輸?shù)?,而且其頭部(headers)和實(shí)體(body)之間是通過換行符進(jìn)行分割的,而HTTP2.0則進(jìn)行了優(yōu)化改進(jìn),將文本傳輸模式改為了二進(jìn)制格式,由于二進(jìn)制格式利用率更高,組織方式更加靈活,使得在HTTP2.0中,解析起來更加高效,同時(shí)將請求(request)/響應(yīng)(response)數(shù)據(jù)分割為更小的幀,并均采用二進(jìn)制編碼。

在這里需要大家了解幾個(gè)概念:

  • 幀:只存在于HTTP2.0中,是數(shù)據(jù)傳輸?shù)淖钚挝弧?br>

  • 數(shù)據(jù)流:虛擬通道,可以承載雙向消息,每個(gè)數(shù)據(jù)流用一個(gè)唯一的整數(shù)ID來標(biāo)識(shí)

  • 消息:與邏輯請求或響應(yīng)消息對應(yīng)的完整的系列幀

在HTTP2.0中,同域名下的所有通信都可以在單個(gè)連接上完成(注:在HTTP1.X中,有多個(gè)連接,這是二則的表現(xiàn)區(qū)別,大家注意一下),該連接可以承載任意任意的雙向數(shù)據(jù)流。

數(shù)據(jù)流是用于承載雙向消息的通道,每條消息都是一條邏輯HTTP消息,例如請求或響應(yīng),可以包含一個(gè)或多個(gè)幀。

簡而言之,HTTP2.0將HTTP協(xié)議通信分解為二進(jìn)制編碼的交換,這些幀對應(yīng)著特定的數(shù)據(jù)流中的消息,所有這些均在一個(gè)連接上復(fù)用。

大家可以通過下圖看看HTTP1.X和HTTP2.0的區(qū)別:

本圖來源于網(wǎng)絡(luò)

Web頁面結(jié)構(gòu)

在我們用不同的瀏覽器訪問不同的網(wǎng)站時(shí),呈現(xiàn)出樣式各樣的頁面,你有沒有想過為什么會(huì)這樣呢?在本節(jié)我們將介紹網(wǎng)頁的組成、結(jié)構(gòu)等內(nèi)容。?????????

一個(gè)網(wǎng)頁的典型構(gòu)成,一般分為三個(gè)部分:HTML、CSS和javascript。打個(gè)簡單的比喻HTML相當(dāng)于人體骨架、javascript相當(dāng)于強(qiáng)健的肌肉、css相當(dāng)于皮膚,這三種結(jié)合一起就構(gòu)成了一個(gè)完美的網(wǎng)頁。????????

下面我們看一個(gè)基本的網(wǎng)頁構(gòu)成源碼。?

看著有點(diǎn)小復(fù)雜,我們簡化下,其結(jié)構(gòu)源碼如下?

<html><head><!-- 我是網(wǎng)頁注釋 -->  <title>網(wǎng)頁名稱</title>  <link> <!-- 用于鏈jian鏈接引入靜態(tài)資源 --> </link>  <script> <!-- 用于寫js代碼或鏈接引入js庫 --> </script></head><body>  <!-- 頁面主體布局設(shè)計(jì)/顯示區(qū) --></body><script>  <!-- 這里用于寫js --></script></html>

上面這個(gè)結(jié)構(gòu),需要大家閉著眼也要能掌握。對于html更多的tag名稱及作用需要大家進(jìn)一步通過其他資料學(xué)習(xí),推薦一部書

對于爬蟲和自動(dòng)化測試應(yīng)用大家需要重點(diǎn)掌握以下幾個(gè)方面的知識(shí):?????????

- 網(wǎng)頁的結(jié)構(gòu)

- 節(jié)點(diǎn)樹及節(jié)點(diǎn)間的關(guān)系

- 選擇器(xpath、css選擇器)

這里推薦幾篇過往的文章,如下:

使用Xpath獲取頁面元素

在Selenium Webdriver中使用XPath Contains、Sibling函數(shù)定位

selenium使用Xpath+CSS+JavaScript+jQuery的定位方法 - 專治各種定位不準(zhǔn)并發(fā)癥

爬蟲基本原理

在應(yīng)用爬蟲進(jìn)行實(shí)踐前,需要掌握爬蟲的基本原理和過程。簡單講,爬蟲就是獲取網(wǎng)頁并提取和保存信息的自動(dòng)化程序。?????????????

理解了上面這句簡單的話,我們大概就知道了爬蟲基本原理和過程如下:

1. 獲取目標(biāo)網(wǎng)頁??

2. 提取目標(biāo)網(wǎng)頁中的目標(biāo)信息

3. 保存目標(biāo)數(shù)據(jù)?

4. 自動(dòng)化完成上述步驟????

Session和Cookie基礎(chǔ)

在瀏覽網(wǎng)頁時(shí),我們經(jīng)常碰到網(wǎng)頁需要登錄的情況,很多頁面都需要登錄獲取權(quán)限后才能進(jìn)行訪問,這個(gè)時(shí)候就需要涉及Cookie、Session知識(shí)了。在本節(jié)我們簡要的介紹下它們。?

session,中文稱之為會(huì)話,其本義指在貫穿瀏覽過程中的一系列動(dòng)作、消息。例如打開瀏覽器、瀏覽網(wǎng)頁、關(guān)閉瀏覽器。?????????

而在web中,Session對象用例存儲(chǔ)特定用戶Session所需的屬性、配置信息。這樣當(dāng)前用戶才能在不同頁面之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對象中的變量才不至于丟失。如果在過程中用戶的session丟失或過期時(shí),服務(wù)器就會(huì)中斷該Session,讓你無法繼續(xù)瀏覽該服務(wù)。???????

而Cookie則是指望著為了鑒別用戶身份,進(jìn)行session跟蹤而存儲(chǔ)在用戶本地的一些信息。??

幾個(gè)關(guān)鍵點(diǎn):

1.  Session數(shù)據(jù)存儲(chǔ)在服務(wù)端、Cookie數(shù)據(jù)存儲(chǔ)在用戶本地????????????????????

2. Session不會(huì)因?yàn)楸镜亟K端關(guān)閉(例如瀏覽器關(guān)閉)而丟失?

3. Sessio象都是有時(shí)效的,即超過預(yù)定的時(shí)間,會(huì)被服務(wù)器設(shè)置為超時(shí)而失效

代理基本原理

對于爬蟲來講,由于爬蟲的速度較快,因此在爬取過程中可能會(huì)遇到同一個(gè)ip訪問過于頻繁的問題,到導(dǎo)致服務(wù)端禁止該ip進(jìn)行爬取,這會(huì)導(dǎo)致極大的不便,這時(shí)就需要應(yīng)用到代理。???????

代理,即中轉(zhuǎn)站。設(shè)置代理,即在客戶端與服務(wù)器端中間設(shè)置一座中轉(zhuǎn)的橋,這樣客戶端發(fā)起的請求先發(fā)送至代理服務(wù)器,然后代理服務(wù)器再將信息轉(zhuǎn)發(fā)給服務(wù)器,從而實(shí)現(xiàn)代理的作用。?

代理有哪些基本的作用呢???

- 突破自身IP的限制,訪問一些平時(shí)訪問不了的信息?????????

- 提高訪問速度

- 隱藏真實(shí)IP??????

我們按不同的協(xié)議將代理分類如下:

- FTP代理?

- HTTP代理

- SSL/TLS代理

- RTSP代理????

- Telnet代理??

- POP3/SMTP代理??

- SOCKS代理??

本章內(nèi)容就介紹到此,后續(xù)進(jìn)一步開展爬蟲系列的寫作。??

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多