Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程PPT完整全套教學(xué)課件_第1頁
Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程PPT完整全套教學(xué)課件_第2頁
Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程PPT完整全套教學(xué)課件_第3頁
Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程PPT完整全套教學(xué)課件_第4頁
Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩865頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章認(rèn)識網(wǎng)絡(luò)爬蟲《Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程》第1章認(rèn)識網(wǎng)絡(luò)爬蟲第2章網(wǎng)頁請求原理第3章抓取靜態(tài)網(wǎng)頁數(shù)據(jù)第4章解析網(wǎng)頁數(shù)據(jù)第5章抓取動態(tài)網(wǎng)頁數(shù)據(jù)第6章提升網(wǎng)絡(luò)爬蟲速度第7章存儲數(shù)據(jù)第8章驗(yàn)證碼識別第9章初識網(wǎng)絡(luò)爬蟲框架Scrapy第10章Scrapy核心組件與CrawlSpider類第11章分布式網(wǎng)絡(luò)爬蟲Scrapy-Redis全套PPT課件學(xué)習(xí)目標(biāo)/Target熟悉網(wǎng)絡(luò)爬蟲的概念及分類,能夠歸納通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲的區(qū)別了解網(wǎng)絡(luò)爬蟲的應(yīng)用場景,能夠列舉至少3個網(wǎng)絡(luò)爬蟲的應(yīng)用場景熟悉網(wǎng)絡(luò)爬蟲的Robots協(xié)議,能夠說明robots.txt文件中每個選項(xiàng)的含義熟悉防網(wǎng)絡(luò)爬蟲的應(yīng)對策略,能夠列舉至少3個應(yīng)對防網(wǎng)絡(luò)爬蟲的策略學(xué)習(xí)目標(biāo)/Target掌握網(wǎng)絡(luò)爬蟲的工作原理,能夠定義通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲的工作原理熟悉網(wǎng)絡(luò)爬蟲的工作流程,能夠歸納網(wǎng)絡(luò)爬蟲抓取網(wǎng)頁的完整流程了解網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù),能夠說出使用Python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲有哪些優(yōu)勢熟悉網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)流程,能夠歸納使用Python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的流程章節(jié)概述/Summary隨著網(wǎng)絡(luò)的蓬勃發(fā)展,萬維網(wǎng)成為大量信息的載體,如何有效提取并利用這些信息成為一個巨大的挑戰(zhàn)。網(wǎng)絡(luò)爬蟲作為一種自動采集數(shù)據(jù)技術(shù),憑借自身強(qiáng)大的自動提取網(wǎng)頁數(shù)據(jù)的能力,成為當(dāng)下互聯(lián)網(wǎng)高效、靈活地收集數(shù)據(jù)的解決方案之一。本章主要對網(wǎng)絡(luò)爬蟲的基礎(chǔ)知識進(jìn)行詳細(xì)地講解。目錄/Contents1.11.21.3什么是網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲的應(yīng)用場景網(wǎng)絡(luò)爬蟲合法性探究1.41.5網(wǎng)絡(luò)爬蟲的工作原理和流程網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)技術(shù)探究什么是網(wǎng)絡(luò)爬蟲1.1熟悉網(wǎng)絡(luò)爬蟲的概念及分類,能夠歸納通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲的區(qū)別學(xué)習(xí)目標(biāo)1.1什么是網(wǎng)絡(luò)爬蟲1.1什么是網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲(WebCrawler)又稱網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機(jī)器人,它是一種按照一定規(guī)則,自動瀏覽萬維網(wǎng)的程序或腳本。通俗地講,網(wǎng)絡(luò)爬蟲就是一個模擬真人瀏覽萬維網(wǎng)行為的程序,這個程序可以代替真人自動請求萬維網(wǎng),并接收從萬維網(wǎng)返回的數(shù)據(jù)。與真人瀏覽萬維網(wǎng)相比,網(wǎng)絡(luò)爬蟲能夠?yàn)g覽的信息量更大,效率也更高。

網(wǎng)絡(luò)爬蟲概念1.1什么是網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲歷經(jīng)幾十年的發(fā)展,技術(shù)變得更加多樣化,并結(jié)合不同的需求衍生出類型眾多的網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)大致可以分為4種類型,分別是通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò)爬蟲、深層網(wǎng)絡(luò)爬蟲。

網(wǎng)絡(luò)爬蟲分類聚焦網(wǎng)絡(luò)爬蟲通用網(wǎng)絡(luò)爬蟲增量式網(wǎng)絡(luò)爬蟲深層網(wǎng)絡(luò)爬蟲1.1什么是網(wǎng)絡(luò)爬蟲通用網(wǎng)絡(luò)爬蟲(GeneralPurposeWebCrawler)又稱全網(wǎng)爬蟲(ScalableWebCrawler),是指訪問全互聯(lián)網(wǎng)資源的網(wǎng)絡(luò)爬蟲。通用網(wǎng)絡(luò)爬蟲是“互聯(lián)網(wǎng)時(shí)代”早期出現(xiàn)的傳統(tǒng)網(wǎng)絡(luò)爬蟲,它是搜索引擎(如百度、谷歌、雅虎等)抓取系統(tǒng)的重要組成部分,主要用于將互聯(lián)網(wǎng)中的網(wǎng)頁下載到本地,形成一個互聯(lián)網(wǎng)內(nèi)容的鏡像備份。通用網(wǎng)絡(luò)爬蟲

網(wǎng)絡(luò)爬蟲分類1.1什么是網(wǎng)絡(luò)爬蟲聚焦網(wǎng)絡(luò)爬蟲(FocusedCrawler)又稱主題網(wǎng)絡(luò)爬蟲(TopicalCrawler),是指有選擇性地訪問那些與預(yù)定主題相關(guān)網(wǎng)頁的網(wǎng)絡(luò)爬蟲,它根據(jù)預(yù)先定義好的目標(biāo),有選擇性地訪問與目標(biāo)主題相關(guān)的網(wǎng)頁,獲取所需要的數(shù)據(jù)。與通用網(wǎng)絡(luò)爬蟲相比,聚焦網(wǎng)絡(luò)爬蟲只需要訪問與預(yù)定主題相關(guān)的網(wǎng)頁,這不僅減少了訪問和保存的頁面數(shù)量,而且提高了網(wǎng)頁的更新速度,可見,聚焦網(wǎng)絡(luò)爬蟲在一定程度度節(jié)省了網(wǎng)絡(luò)資源,能滿足一些特定人群采集特定領(lǐng)域數(shù)據(jù)的需求。

網(wǎng)絡(luò)爬蟲分類聚焦網(wǎng)絡(luò)爬蟲1.1什么是網(wǎng)絡(luò)爬蟲增量式網(wǎng)絡(luò)爬蟲(IncrementalWebCrawler)是指對已下載的網(wǎng)頁采取增量式更新,只抓取新產(chǎn)生或者已經(jīng)發(fā)生變化的網(wǎng)頁的網(wǎng)絡(luò)爬蟲。增量式網(wǎng)絡(luò)爬蟲只會抓取新產(chǎn)生的或內(nèi)容變化的網(wǎng)頁,并不會重新抓取內(nèi)容未發(fā)生變化的網(wǎng)頁,這樣可以有效地減少網(wǎng)頁的下載量,減少訪問時(shí)間和存儲空間的耗費(fèi),但是增加了網(wǎng)頁抓取算法的復(fù)雜度和實(shí)現(xiàn)難度。

網(wǎng)絡(luò)爬蟲分類增量式網(wǎng)絡(luò)爬蟲1.1什么是網(wǎng)絡(luò)爬蟲深層網(wǎng)絡(luò)爬蟲(DeepWebCrawler)是指抓取深層網(wǎng)頁的網(wǎng)絡(luò)爬蟲,它要抓取的網(wǎng)頁層次比較深,需要通過一定的附加策略才能夠自動抓取,實(shí)現(xiàn)難度較大。

網(wǎng)絡(luò)爬蟲分類深層網(wǎng)絡(luò)爬蟲網(wǎng)頁按存在方式可以分為表層網(wǎng)頁(SurfaceWeb)和深層網(wǎng)頁(DeepWeb),關(guān)于這兩類網(wǎng)頁的介紹如下。多學(xué)一招表層網(wǎng)頁是指傳統(tǒng)搜索引擎可以索引的頁面,主要以超鏈接可以到達(dá)的靜態(tài)網(wǎng)頁構(gòu)成的網(wǎng)頁。深層網(wǎng)頁是指大部分內(nèi)容無法通過靜態(tài)鏈接獲取的,只能通過用戶提交一些關(guān)鍵詞才能獲取的網(wǎng)頁,如用戶注冊后內(nèi)容才可見的網(wǎng)頁。表層網(wǎng)頁與深層網(wǎng)頁網(wǎng)絡(luò)爬蟲的應(yīng)用場景1.2了解網(wǎng)絡(luò)爬蟲的應(yīng)用場景,能夠列舉至少3個網(wǎng)絡(luò)爬蟲的應(yīng)用場景學(xué)習(xí)目標(biāo)1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景隨著互聯(lián)網(wǎng)信息的“爆炸”,網(wǎng)絡(luò)爬蟲漸漸為人們所熟知,并被應(yīng)用到了社會生活的眾多領(lǐng)域。作為一種自動采集網(wǎng)頁數(shù)據(jù)的技術(shù),很多人其實(shí)并不清楚網(wǎng)絡(luò)爬蟲具體能應(yīng)用到什么場景。事實(shí)上,大多數(shù)依賴數(shù)據(jù)支撐的應(yīng)用場景都離不開網(wǎng)絡(luò)爬蟲,包括搜索引擎、輿情分析與監(jiān)測、聚合平臺、出行類軟件等。1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景輿情分析與監(jiān)測搜索引擎聚合平臺出行類軟件

網(wǎng)絡(luò)爬蟲的應(yīng)用場景搜索引擎是通用網(wǎng)絡(luò)爬蟲最重要的應(yīng)用場景之一,它會將網(wǎng)絡(luò)爬蟲作為最基礎(chǔ)的部分——互聯(lián)網(wǎng)信息的采集器,讓網(wǎng)絡(luò)爬蟲自動到互聯(lián)網(wǎng)中抓取數(shù)據(jù)。例如,谷歌、百度、必應(yīng)等搜索引擎都是利用網(wǎng)絡(luò)爬蟲技術(shù)從互聯(lián)網(wǎng)上采集海量的數(shù)據(jù)。1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景搜索引擎

網(wǎng)絡(luò)爬蟲的應(yīng)用場景政府或企業(yè)通過網(wǎng)絡(luò)爬蟲技術(shù)自動采集論壇評論、在線博客、新聞媒體或微博等網(wǎng)站中的海量數(shù)據(jù),采用數(shù)據(jù)挖掘的相關(guān)方法(如詞頻統(tǒng)計(jì)、文本情感計(jì)算、主題識別等)發(fā)掘輿情熱點(diǎn),跟蹤目標(biāo)話題,并根據(jù)一定的標(biāo)準(zhǔn)采取相應(yīng)的輿情控制與引導(dǎo)措施。例如,百度熱點(diǎn)排行榜、微博熱搜排行榜。1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景

網(wǎng)絡(luò)爬蟲的應(yīng)用場景輿情分析與檢測如今出現(xiàn)的很多聚合平臺,如返利網(wǎng)、慢慢買等,也是網(wǎng)絡(luò)爬蟲技術(shù)的常見的應(yīng)用場景,這些平臺就是運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù)對一些電商平臺上的商品信息進(jìn)行采集,將所有的商品信息放到自己的平臺上展示,并提供橫向數(shù)據(jù)的比較,幫助用戶尋找實(shí)惠的商品價(jià)格。例如,用戶在慢慢買平臺搜索華為智能手表后,平臺上展示了很多款華為智能手表的價(jià)格分析及價(jià)格走勢等信息。1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景

網(wǎng)絡(luò)爬蟲的應(yīng)用場景聚合平臺出行類軟件,比如飛豬、攜程、去哪兒等,也是網(wǎng)絡(luò)爬蟲應(yīng)用比較多的場景。這類應(yīng)用運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù),不斷地訪問交通出行的官方售票網(wǎng)站刷新余票,一旦發(fā)現(xiàn)有新的余票便會通知用戶付款買票。不過,官方售票網(wǎng)站并不歡迎網(wǎng)絡(luò)爬蟲的這種行為,因?yàn)楦哳l率地訪問網(wǎng)頁極易造成網(wǎng)站出現(xiàn)癱瘓的情況。1.2網(wǎng)絡(luò)爬蟲的應(yīng)用場景

網(wǎng)絡(luò)爬蟲的應(yīng)用場景出行類軟件網(wǎng)絡(luò)爬蟲合法性探究1.3網(wǎng)絡(luò)爬蟲在訪問網(wǎng)站時(shí),需要遵循“有禮貌”的原則,這樣才能與更多的網(wǎng)站建立友好關(guān)系。即便如此,網(wǎng)絡(luò)爬蟲的爬行行為仍會給網(wǎng)站增加不小的壓力,嚴(yán)重時(shí)甚至可能會影響網(wǎng)站的正常訪問。為了約束網(wǎng)絡(luò)爬蟲的惡意行為,網(wǎng)站內(nèi)部加入了一些防爬蟲措施來阻止網(wǎng)絡(luò)爬蟲。與此同時(shí),網(wǎng)絡(luò)爬蟲也研究了防爬蟲措施的應(yīng)對策略。1.3網(wǎng)絡(luò)爬蟲合法性探究熟悉網(wǎng)絡(luò)爬蟲的Robots協(xié)議,能夠說明robots.txt文件中每個選項(xiàng)的含義學(xué)習(xí)目標(biāo)1.3.1Robots協(xié)議Robots協(xié)議又稱爬蟲協(xié)議,它是國際互聯(lián)網(wǎng)界通行的道德規(guī)范,用于保護(hù)網(wǎng)站數(shù)據(jù)和敏感信息,確保網(wǎng)站用戶的個人信息和隱私不受侵犯。為了讓網(wǎng)絡(luò)爬蟲了解網(wǎng)站的訪問范圍,網(wǎng)站管理員通常會在網(wǎng)站的根目錄下放置一個符合Robots協(xié)議的robots.txt文件,通過這個文件告知網(wǎng)絡(luò)爬蟲在抓取該網(wǎng)站時(shí)存在哪些限制,哪些網(wǎng)頁是允許被抓取的,哪些網(wǎng)頁是禁止被抓取的。

Robots協(xié)議1.3.1Robots協(xié)議當(dāng)網(wǎng)絡(luò)爬蟲訪問網(wǎng)站時(shí),應(yīng)先檢查該網(wǎng)站的根目錄下是否存在robots.txt文件。若robots.txt文件不存在,則網(wǎng)絡(luò)爬蟲會訪問該網(wǎng)站上所有被口令保護(hù)的頁面;若robots.txt文件存在,則網(wǎng)絡(luò)爬蟲會按照該文件的內(nèi)容確定訪問網(wǎng)站的范圍。

robots.txt文件1.3.1Robots協(xié)議robots.txt文件中的內(nèi)容有著一套通用的寫作規(guī)范。下面以豆瓣網(wǎng)站根目錄下的robots.txt文件為例,分析robots.txt文件的語法規(guī)則。

robots.txt文件1.3.1Robots協(xié)議

豆瓣網(wǎng)站robots.txt文件1.3.1Robots協(xié)議User-agent:

*Disallow:/subject_search...Disallow:/share/Allow:/ads.txtSitemap:/sitemap_index.xmlSitemap:/sitemap_updated_index.xml#Crawl-delay:5User-agent:WandoujiaSpiderDisallow:/User-agent:Mediapartners-Google...

robots.txt文件選項(xiàng)說明1.3.1Robots協(xié)議User-agent:用于指定網(wǎng)絡(luò)爬蟲的名稱。若該選項(xiàng)的值為“*”,則說明robots.txt文件對任何網(wǎng)絡(luò)爬蟲均有效。帶有“*”號的User-agent選項(xiàng)只能出現(xiàn)一次。例如,示例的第一條語句User-agent:*。Disallow:用于指定網(wǎng)絡(luò)爬蟲禁止訪問的目錄。若Disallow選項(xiàng)的內(nèi)容為空,說明網(wǎng)站的任何內(nèi)容都是被允許訪問的。在robots.txt文件中,至少要有一個包含Disallow選項(xiàng)的語句。例如,Disallow:/subject_search禁止網(wǎng)絡(luò)爬蟲訪問目錄/subject_search。

robots.txt文件選項(xiàng)說明1.3.1Robots協(xié)議Allow:用于指定網(wǎng)絡(luò)爬蟲允許訪問的目錄。例如,Allow:/ads.txt表示允許網(wǎng)絡(luò)爬蟲訪問目錄/ads.txt。Sitemap:用于告知網(wǎng)絡(luò)爬蟲網(wǎng)站地圖的路徑。例如,Sitemap:/sitemap_index.xml和/sitemap_updated_index.xml這兩個路徑都是網(wǎng)站地圖,主要說明網(wǎng)站更新時(shí)間、更新頻率、網(wǎng)址重要程度等信息。1.3.1Robots協(xié)議Robots協(xié)議只是一個網(wǎng)站與網(wǎng)絡(luò)爬蟲之間達(dá)成的“君子”協(xié)議,它并不是計(jì)算機(jī)中的防火墻,沒有實(shí)際的約束力。如果把網(wǎng)站比作私人花園,那么robots.txt文件便是私人花園門口的告示牌,這個告示牌上寫有是否可以進(jìn)入花園,以及進(jìn)入花園后應(yīng)該遵守的規(guī)則,但告示牌并不是高高的圍欄,它只對遵守協(xié)議的“君子”有用,對于違背協(xié)議的人而言并沒有太大的作用。盡管Robots協(xié)議沒有一定的強(qiáng)制約束力,但網(wǎng)絡(luò)爬蟲仍然要遵守協(xié)議,違背協(xié)議可能會存在一定的法律風(fēng)險(xiǎn)。熟悉防網(wǎng)絡(luò)爬蟲的應(yīng)對策略,能夠列舉至少3個應(yīng)對防網(wǎng)絡(luò)爬蟲的策略學(xué)習(xí)目標(biāo)1.3.2防爬蟲應(yīng)對策略1.3.2防爬蟲應(yīng)對策略網(wǎng)絡(luò)爬蟲會采取一些應(yīng)對策略繼續(xù)訪問網(wǎng)站,常見的應(yīng)對策略包括添加User-Agent字段、降低訪問頻率、設(shè)置代理服務(wù)、識別驗(yàn)證碼。添加User-Agent字段降低訪問頻率設(shè)置代理服務(wù)器識別驗(yàn)證碼瀏覽器在訪問網(wǎng)站時(shí)會攜帶固定的User-Agent(用戶代理,用于描述瀏覽器的類型及版本、操作系統(tǒng)及版本、瀏覽器插件、瀏覽器語言等信息),向網(wǎng)站表明自己的真實(shí)身份。網(wǎng)絡(luò)爬蟲每次訪問網(wǎng)站時(shí)可以模仿瀏覽器的上述行為,也就是在請求網(wǎng)頁時(shí)攜帶User-Agent,將自己偽裝成一個瀏覽器,如此便可以繞過網(wǎng)站的檢測,避免出現(xiàn)被網(wǎng)站服務(wù)器直接拒絕訪問的情況。1.3.2防爬蟲應(yīng)對策略添加User-Agent字段降低訪問頻率設(shè)置代理服務(wù)器識別驗(yàn)證碼如果同一賬戶在較短的時(shí)間內(nèi)多次訪問了網(wǎng)頁,那么網(wǎng)站運(yùn)維人員會推斷此種訪問行為可能是網(wǎng)絡(luò)爬蟲的行為,并將該賬戶加入到黑名單禁止訪問網(wǎng)站。為防止網(wǎng)站運(yùn)維人員從訪問量上推斷出網(wǎng)絡(luò)爬蟲的身份,可以降低網(wǎng)絡(luò)爬蟲訪問網(wǎng)站的頻率。不過,這種方式會降低網(wǎng)絡(luò)爬蟲的爬行效率,為了彌補(bǔ)這個不足,我們可以適當(dāng)?shù)卣{(diào)整一些操作,如讓網(wǎng)絡(luò)爬蟲每抓取一次頁面數(shù)據(jù)就休息幾秒鐘,或者限制每天抓取的頁面數(shù)據(jù)的數(shù)量。1.3.2防爬蟲應(yīng)對策略添加User-Agent字段降低訪問頻率設(shè)置代理服務(wù)器識別驗(yàn)證碼網(wǎng)絡(luò)爬蟲在訪問網(wǎng)站時(shí),若反復(fù)使用同一IP地址進(jìn)行訪問,則極易被網(wǎng)站認(rèn)出網(wǎng)絡(luò)爬蟲的身份后進(jìn)行屏蔽、阻止、封禁等。此時(shí)可以在網(wǎng)絡(luò)爬蟲和Web服務(wù)器之間設(shè)置代理服務(wù)器。有了代理服務(wù)器之后,網(wǎng)絡(luò)爬蟲會先將請求發(fā)送給代理服務(wù)器,代理服務(wù)器再轉(zhuǎn)發(fā)給服務(wù)器,這時(shí)服務(wù)器記錄的是代理服務(wù)器的IP地址,而不是網(wǎng)絡(luò)爬蟲的IP地址。1.3.2防爬蟲應(yīng)對策略添加User-Agent字段降低訪問頻率設(shè)置代理服務(wù)器識別驗(yàn)證碼有些網(wǎng)站在檢測到某個客戶端的IP地址訪問次數(shù)過于頻繁時(shí),會要求該客戶端進(jìn)行登錄驗(yàn)證,并隨機(jī)提供一個驗(yàn)證碼。為了應(yīng)對這種突發(fā)情況,網(wǎng)絡(luò)爬蟲除了要輸入正確的賬戶密碼之外,還要像人類一樣通過滑動或點(diǎn)擊行為識別驗(yàn)證碼,如此才能繼續(xù)訪問網(wǎng)站。由于驗(yàn)證碼的種類較多,不同的驗(yàn)證碼需要采用不同的技術(shù)進(jìn)行識別,具有一定的技術(shù)難度。1.3.2防爬蟲應(yīng)對策略網(wǎng)絡(luò)爬蟲的工作原理和流程1.4掌握網(wǎng)絡(luò)爬蟲的工作原理,能夠定義通用爬蟲和聚焦爬蟲的工作原理學(xué)習(xí)目標(biāo)1.4.1網(wǎng)絡(luò)爬蟲的工作原理通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲是如何工作的?1.4.1網(wǎng)絡(luò)爬蟲的工作原理通用網(wǎng)絡(luò)爬蟲的采集目標(biāo)是整個互聯(lián)網(wǎng)上的所有網(wǎng)頁,它會從一個或多個初始URL開始,獲取初始URL對應(yīng)的網(wǎng)頁數(shù)據(jù),并不斷從該網(wǎng)頁數(shù)據(jù)中抽取新的URL放到隊(duì)列中,直至滿足一定的條件后停止。

通用網(wǎng)絡(luò)爬蟲的工作原理1.4.1網(wǎng)絡(luò)爬蟲的工作原理1.4.1網(wǎng)絡(luò)爬蟲的工作原理(1)獲取初始URL。既可以由用戶指定,也可以由待采集的初始網(wǎng)頁指定。(2)抓取頁面,并獲得新URL。根據(jù)初始URL抓取對應(yīng)的網(wǎng)頁,之后將該網(wǎng)頁存儲到原始網(wǎng)頁數(shù)據(jù)庫中,并且在抓取網(wǎng)頁的同時(shí)對網(wǎng)頁內(nèi)容進(jìn)行解析,并從中提取出新URL。(3)將新URL放入U(xiǎn)RL隊(duì)列。有了新URL之后,我們需要將新URL放入U(xiǎn)RL隊(duì)列中。(4)讀取新URL。從URL隊(duì)列中讀取新URL,并根據(jù)該URL獲取對應(yīng)網(wǎng)頁數(shù)據(jù),同時(shí)從新網(wǎng)頁中抽取新的URL。(5)是否滿足停止條件。若網(wǎng)絡(luò)爬蟲滿足設(shè)置的停止條件,則停止采集;若網(wǎng)絡(luò)爬蟲沒有滿足設(shè)置的停止條件,則繼續(xù)根據(jù)新URL抓取對應(yīng)的網(wǎng)頁,并重復(fù)步驟(2)~(5)。聚焦網(wǎng)絡(luò)爬蟲面向有特殊需求的人群,它會根據(jù)預(yù)先設(shè)定的主題順著某個垂直領(lǐng)域進(jìn)行抓取,而不是漫無目的地隨意抓取。與通用網(wǎng)絡(luò)爬蟲相比,聚焦網(wǎng)絡(luò)爬蟲會根據(jù)一定的網(wǎng)頁分析算法對網(wǎng)頁進(jìn)行篩選,保留與主題有關(guān)的網(wǎng)頁鏈接,舍棄與主題無關(guān)的網(wǎng)頁鏈接,其目的性更強(qiáng)。

聚焦網(wǎng)絡(luò)爬蟲的工作原理1.4.1網(wǎng)絡(luò)爬蟲的工作原理1.4.1網(wǎng)絡(luò)爬蟲的工作原理(1)根據(jù)需求確定好聚焦網(wǎng)絡(luò)爬蟲的采集目標(biāo),以及進(jìn)行相關(guān)的描述。(2)獲取初始URL。(3)根據(jù)初始URL抓取頁面,并獲得新URL。(4)從新URL中過濾掉與采集目標(biāo)無關(guān)的URL。(5)將過濾后的URL放到URL隊(duì)列中。(6)根據(jù)一定的抓取策略,從URL隊(duì)列中確定URL優(yōu)先級,并確定下一步要抓取的URL。(7)從下一步要抓取的URL中讀取新URL,以準(zhǔn)備根據(jù)新URL抓取下一個網(wǎng)頁。(8)若聚焦網(wǎng)絡(luò)爬蟲滿足設(shè)置的停止條件,或沒有可獲取的URL時(shí),停止采集;若網(wǎng)絡(luò)爬蟲沒有滿足設(shè)置的停止條件,則繼續(xù)根據(jù)新URL抓取對應(yīng)的網(wǎng)頁,并重復(fù)步驟(3)~(8)。熟悉網(wǎng)絡(luò)爬蟲的工作流程,能夠歸納網(wǎng)絡(luò)爬蟲抓取網(wǎng)頁的完整流程學(xué)習(xí)目標(biāo)1.4.2網(wǎng)絡(luò)爬蟲抓取網(wǎng)頁的流程(1)選擇一些網(wǎng)頁,將這些網(wǎng)頁的鏈接作為種子URL放入待抓取URL隊(duì)列中。(2)從待抓取URL隊(duì)列中依次讀取URL。(3)通過DNS解析URL,把URL地址轉(zhuǎn)換為網(wǎng)站服務(wù)器所對應(yīng)的IP地址。(4)將IP地址和網(wǎng)頁相對路徑名稱交給網(wǎng)頁下載器,網(wǎng)頁下載器負(fù)責(zé)網(wǎng)頁內(nèi)容的下載。(5)網(wǎng)頁下載器將相應(yīng)網(wǎng)頁的內(nèi)容下載到本地。(6)將下載到本地的網(wǎng)頁存儲到頁面庫中,同時(shí)將使用過的URL放入到已抓取的URL隊(duì)列中,避免重復(fù)抓取。(7)對于剛下載的網(wǎng)頁中抽取出所包含的URL信息。(8)在已抓取URL隊(duì)列中檢查抽取的URL是否被下載過。如果它還未被下載過,則將這個URL放入待抓取URL隊(duì)列中。如此重復(fù)(2)~(8),直到待抓取URL隊(duì)列為空。1.4.2網(wǎng)絡(luò)爬蟲抓取網(wǎng)頁的流程網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)技術(shù)探究1.5了解網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù),能夠說出使用Python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲有哪些優(yōu)勢學(xué)習(xí)目標(biāo)1.5網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)技術(shù)探究為滿足用戶快速從網(wǎng)頁上采集數(shù)據(jù)的需求,市面上出現(xiàn)了一些可視化界面的網(wǎng)絡(luò)爬蟲工具,比如八爪魚采集器、火車頭采集器等。除了直接使用這些現(xiàn)成的工具之外,我們也可以開發(fā)一個自己的網(wǎng)絡(luò)爬蟲。目前,開發(fā)網(wǎng)絡(luò)爬蟲的語言主要有PHP、Go、C++、Java、Python共5種。

網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)1.5.1網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)

網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)1.5.1網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)PHPPHP語言的優(yōu)點(diǎn)是語法簡潔,容易上手,擁有豐富的網(wǎng)絡(luò)爬蟲功能模塊;缺點(diǎn)是對多線程的支持不太友好,需要借助擴(kuò)展實(shí)現(xiàn)多線程技術(shù),并發(fā)處理的能力相對較弱。GoC+Go語言的優(yōu)點(diǎn)是高并發(fā)能力強(qiáng)、開發(fā)效率高、豐富的標(biāo)準(zhǔn)庫,通過Go語言開發(fā)的網(wǎng)絡(luò)爬蟲程序性能更好;缺點(diǎn)是普及性不高。C++語言的優(yōu)點(diǎn)是運(yùn)行速度快、性能強(qiáng);缺點(diǎn)是學(xué)習(xí)成本高、代碼成型速度慢。網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)

網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)1.5.1網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)JavaJava在網(wǎng)絡(luò)爬蟲方向已經(jīng)形成了完善的生態(tài)圈,非常適合開發(fā)大型網(wǎng)絡(luò)爬蟲項(xiàng)目,但重構(gòu)成本比較高。Python使用Python在網(wǎng)絡(luò)爬蟲方向已經(jīng)形成完善的生態(tài)圈,它擁有嬌俏的多線程處理能力,但是網(wǎng)頁解析能力不夠強(qiáng)大。網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)

使用Python開發(fā)網(wǎng)絡(luò)爬蟲的優(yōu)點(diǎn)1.5.1網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)(1)語法簡潔。對于同一個功能,使用Python只需要編寫幾十行代碼,而使用Java可能需要編寫幾百行代碼。(2)容易上手?;ヂ?lián)網(wǎng)中有很多關(guān)于Python的教學(xué)資源,便于大家學(xué)習(xí),出現(xiàn)問題也很容易找到相關(guān)資料進(jìn)行解決。(3)開發(fā)效率高。網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)代碼需要根據(jù)不同的網(wǎng)站內(nèi)容進(jìn)行局部修改,這種任務(wù)非常適合像Python這樣靈活的腳本語言。(4)模塊豐富。Python提供了豐富的內(nèi)置模塊、第三方模塊,以及成熟的網(wǎng)絡(luò)爬蟲框架,能夠幫助開發(fā)人員快速實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的基本功能。熟悉網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)流程,能夠歸納使用Python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的流程學(xué)習(xí)目標(biāo)1.5.2Python網(wǎng)絡(luò)爬蟲的流程1.5.2Python網(wǎng)絡(luò)爬蟲的流程抓取網(wǎng)頁數(shù)據(jù)解析網(wǎng)頁數(shù)據(jù)存儲數(shù)據(jù)123抓取網(wǎng)頁數(shù)據(jù)是按照預(yù)先設(shè)定的目標(biāo),根據(jù)所有目標(biāo)網(wǎng)頁的URL向網(wǎng)站發(fā)送請求,并獲得整個網(wǎng)頁的數(shù)據(jù)。解析網(wǎng)頁數(shù)據(jù)是采用不同的解析網(wǎng)頁的方式從整個網(wǎng)頁的數(shù)據(jù)中提取出目標(biāo)數(shù)據(jù)。存儲數(shù)據(jù)的過程也是比較簡單,就是將解析網(wǎng)頁數(shù)據(jù)提取的目標(biāo)數(shù)據(jù)以文件的形式存放到本地,也可以存儲到數(shù)據(jù)庫,方便后期對數(shù)據(jù)進(jìn)行深入地研究。本章小結(jié)本章是全書的開篇。在本章中,我們首先講解了網(wǎng)絡(luò)爬蟲的概念和應(yīng)用場景,然后講解了Robots協(xié)議和防爬蟲應(yīng)對策略,接著講解了網(wǎng)絡(luò)爬蟲的工作原理、工作流程,最后講解了網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)技術(shù)和Python實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的流程。希望讀者通過本章內(nèi)容的學(xué)習(xí),對網(wǎng)絡(luò)爬蟲有個大致的認(rèn)識,為后續(xù)深入學(xué)習(xí)網(wǎng)絡(luò)爬蟲奠定基礎(chǔ)。本章小結(jié)第2章網(wǎng)頁請求原理《Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解瀏覽器加載網(wǎng)頁的過程,能夠復(fù)述出瀏覽器加載網(wǎng)頁的過程熟悉HTTP的基本原理,能夠歸納URL格式、HTTP請求格式和HTTP響應(yīng)格式熟悉網(wǎng)頁基礎(chǔ)知識,能夠區(qū)分HTML、JavaScript和CSS三者的區(qū)別掌握HTTP抓包工具Fiddler的使用,能夠獨(dú)立安裝并使用Fiddler工具章節(jié)概述/Summary網(wǎng)絡(luò)爬蟲請求網(wǎng)頁的過程可以理解為用戶使用瀏覽器加載網(wǎng)頁的過程,這個過程其實(shí)是向Web服務(wù)器發(fā)送請求的過程,即瀏覽器向Web服務(wù)器發(fā)送請求,Web服務(wù)器會將響應(yīng)內(nèi)容以網(wǎng)頁形式返回給瀏覽器。因此,了解瀏覽器與Web服務(wù)器之間的通信方式和交互過程,理解網(wǎng)頁的組成、結(jié)構(gòu)、分類、數(shù)據(jù)格式,能加深對網(wǎng)絡(luò)爬蟲的理解。本章將針對網(wǎng)頁請求原理的相關(guān)知識進(jìn)行講解。目錄/Contents2.12.22.3瀏覽器加載網(wǎng)頁的過程HTTP基礎(chǔ)網(wǎng)頁基礎(chǔ)2.4HTTP抓包工具——Fiddler瀏覽器加載網(wǎng)頁的過程2.1了解瀏覽器加載網(wǎng)頁的過程,能夠復(fù)述出瀏覽器加載網(wǎng)頁的過程學(xué)習(xí)目標(biāo)2.1瀏覽器加載網(wǎng)頁的過程2.1瀏覽器加載網(wǎng)頁過程(1)瀏覽器通過域名系統(tǒng)(DomainNameSystem,DNS)服務(wù)器查找百度服務(wù)器對應(yīng)的IP地址。(2)瀏覽器向IP地址對應(yīng)的Web服務(wù)器發(fā)送HTTP請求。(3)Web服務(wù)器接收HTTP請求后進(jìn)行處理,向?yàn)g覽器返回HTML頁面。(4)瀏覽器對HTML頁面進(jìn)行渲染呈現(xiàn)給用戶。HTTP基礎(chǔ)2.2熟悉HTTP的基本原理,能夠歸納URL格式、HTTP請求格式和HTTP響應(yīng)格式學(xué)習(xí)目標(biāo)2.2.1URL簡介2.2.1URL簡介URL(全稱UniformResourceLocator)又稱URL地址,表示統(tǒng)一資源定位符,用于指定因特網(wǎng)上某個資源的位置。URL地址的語法格式如下。scheme://[user]:[password]@host:[port]/path;[params]?[query]#[frag]2.2.1URL簡介選項(xiàng)說明scheme表示方案,用于標(biāo)識采用哪種傳輸協(xié)議訪問服務(wù)器資源user表示用戶,用于標(biāo)識訪問服務(wù)器資源時(shí)需要的用戶名password表示密碼,用戶名后面可能要包含的密碼,兩者之間以”:”分隔host表示主機(jī)地址,也就是存放資源的服務(wù)器主機(jī)名或IP地址port表示端口號,也就是存放資源的服務(wù)器監(jiān)聽的端口號path用于指定本次請求資源在服務(wù)器中的位置params表示訪問資源時(shí)使用的協(xié)議參數(shù),參數(shù)之間以“;”分隔query表示查詢字符串,用于指定查詢的資源,一般使用“?”與URL的其余部分進(jìn)行分隔。查詢字符串沒有通用格式,它通常會以”&”連接多個參數(shù),每個參數(shù)的名稱與值使用“=”連接,如/?ie=utf-8&wd=pythonfrag表示片段,用于指定訪問資源時(shí)某一部分資源的名稱URL地址語法格式中各選項(xiàng)的說明

scheme2.2.1URL簡介傳輸協(xié)議說明示例File訪問本地計(jì)算機(jī)的資源file:///Users/itcast/Desktop/basic.htmlFTP文件傳輸協(xié)議,訪問共享主機(jī)的文件資源/moviesHTTP超文本傳輸協(xié)議,訪問遠(yuǎn)程網(wǎng)絡(luò)資源/template/gfquan/src/logo.pngHTTPS安全的SSL加密傳輸協(xié)議,訪問遠(yuǎn)程網(wǎng)絡(luò)資源/channel/wallpaperMailto訪問電子郵件地址mailto:null@scheme選項(xiàng)用于規(guī)定如何訪問指定資源的主要標(biāo)識符,它會告訴負(fù)責(zé)解析URL的應(yīng)用程序應(yīng)該使用什么傳輸協(xié)議。

host2.2.1URL簡介host指存放資源的主機(jī)名或者IP地址,它用于標(biāo)識互聯(lián)網(wǎng)上的唯一一臺計(jì)算機(jī),保證用戶在聯(lián)網(wǎng)的計(jì)算機(jī)上可以高效地從成千上萬臺計(jì)算機(jī)中找到這臺計(jì)算機(jī)。IP地址分為IPv4(互聯(lián)網(wǎng)通信協(xié)議第4版)和IPv6(互聯(lián)網(wǎng)協(xié)議第6版),目前較通用的IP地址是IPv4,它通?!包c(diǎn)分十進(jìn)制”表示成“a.b.c.d”的形式,并通過DNS服務(wù)將域名和IP地址相互映射,比如.就是對應(yīng)的域名。

port2.2.1URL簡介port用于標(biāo)識在一臺計(jì)算機(jī)上運(yùn)行的不同程序,它與主機(jī)地址以“:”進(jìn)行分隔。每個網(wǎng)絡(luò)程序都對應(yīng)一個或多個特定的端口號,例如,采用HTTP協(xié)議的程序默認(rèn)使用的端口號為80,采用HTTPS協(xié)議的程序默認(rèn)使用的端口號為443。

path2.2.1URL簡介path是由0個或多個“/”符號隔開的字符串,一般用于指定本次請求的資源在服務(wù)器中的位置。熟悉HTTP和HTTPS協(xié)議,能夠說明HTTP和HTTPS協(xié)議的作用學(xué)習(xí)目標(biāo)2.2.2HTTP和HTTPS對于網(wǎng)絡(luò)爬蟲來說,它采集的頁面通常使用的是HTTP協(xié)議和HTTPS協(xié)議。HTTP協(xié)議全稱為超文本傳輸協(xié)議(HyperTextTransferProtocol),它用于將Web服務(wù)器的超文本資源傳送到瀏覽器中。HTTP協(xié)議能夠高效、準(zhǔn)確地傳送超文本資源,但瀏覽器與Web服務(wù)器的連接是一種一次性連接,它限制每次連接只能處理一個請求。這意味著每個請求都是獨(dú)立的,服務(wù)器返回本次請求的應(yīng)答后便立即關(guān)閉連接,下次請求再重新建立連接。2.2.2HTTP和HTTPS對于網(wǎng)絡(luò)爬蟲來說,它采集的頁面通常使用的是HTTP協(xié)議和HTTPS協(xié)議。HTTPS協(xié)議全稱為超文本傳輸安全協(xié)議(HyperTextTransferProtocolSecure),該協(xié)議在HTTP協(xié)議基礎(chǔ)上添加了安全套接字協(xié)議(SecureSocketsLayer,SSL),數(shù)據(jù)在傳輸過程中主要通過數(shù)字證書、加密算法、非對稱密鑰等技術(shù)完成互聯(lián)網(wǎng)數(shù)據(jù)傳輸加密,實(shí)現(xiàn)互聯(lián)網(wǎng)傳輸安全保護(hù)。2.2.2HTTP和HTTPS熟悉HTTP請求格式,能夠說明HTTP請求格式中各字段的作用學(xué)習(xí)目標(biāo)2.2.3HTTP請求格式2.2.3HTTP請求格式瀏覽器向Web服務(wù)器發(fā)送的信息是一個HTTP請求,每個HTTP請求由請求行、請求頭部、空行以及請求數(shù)據(jù)(有的也稱為請求體)這4個部分組成。2.2.3HTTP請求格式

請求行GET/item/Python/407313HTTP/1.1請求行的內(nèi)容具體如下。在請求行中,GET表示向服務(wù)器請求網(wǎng)絡(luò)資源時(shí)所使用的請求方法,/item/Python/407313表示請求的URL地址,HTTP/1.1表示使用的HTTP版本。2.2.3HTTP請求格式

請求行常用的請求方法包括GET和POST,其中GET用于請求服務(wù)器發(fā)送某個資源,POST用于向服務(wù)器提交表單或上傳文件,表單數(shù)據(jù)或文件的數(shù)據(jù)會包含在請求體中。請求方法GET和POST的區(qū)別主要體現(xiàn)兩個方面。GET請求方法通過請求參數(shù)傳輸數(shù)據(jù),最多只能傳輸2KB的數(shù)據(jù);POST請求方法通過實(shí)體內(nèi)容傳輸數(shù)據(jù),可以傳輸?shù)臄?shù)據(jù)大小沒有限制。傳輸數(shù)據(jù)大小GET請求方法的參數(shù)信息會在URL中明文顯示,安全性比較低;POST請求方法傳遞的參數(shù)會隱藏在實(shí)體內(nèi)容中,用戶看不到,安全性更高。安全性2.2.3HTTP請求格式

請求頭請求行緊挨的部分就是若干個請求頭信息,請求頭主要用于說明服務(wù)器要使用的附加信息。Host用于指定被請求資源的服務(wù)器主機(jī)名和端口號。User-Agent用于標(biāo)識客戶端身份,通常頁面會根據(jù)不同的User-Agent信息自動做出適配,甚至返回不同的響應(yīng)內(nèi)容。Accept用于指定瀏覽器或其他客戶端可以接受的MIME文件類型,服務(wù)器可以根據(jù)該字段判斷并返回適當(dāng)?shù)奈募袷?。Referer用于標(biāo)識當(dāng)前請求頁面的來源頁面地址,即表示當(dāng)前頁面是通過此來源頁面里的鏈接進(jìn)入的。2.2.3HTTP請求格式

請求頭請求行緊挨的部分就是若干個請求頭信息,請求頭主要用于說明服務(wù)器要使用的附加信息。Accept-Charse用于指定瀏覽器可以接受的字符集類型。Cookie用于在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務(wù)器相關(guān)的用戶信息,也可以用來實(shí)現(xiàn)模擬登錄。Content-Type用于指出實(shí)體內(nèi)容的MIME類型。熟悉HTTP響應(yīng)格式,能夠說明HTTP響應(yīng)格式中各字段的作用學(xué)習(xí)目標(biāo)2.2.4HTTP響應(yīng)格式Web服務(wù)器發(fā)送給瀏覽器的響應(yīng)信息由4個部分組成,分別是狀態(tài)行、響應(yīng)頭、空行、以及響應(yīng)正文。2.2.4HTTP響應(yīng)格式

狀態(tài)行HTTP/1.1200OK狀態(tài)行的內(nèi)容具體如下。在狀態(tài)行中,HTTP/1.1表示HTTP協(xié)議的版本號,200表示響應(yīng)狀態(tài)碼,OK表示響應(yīng)狀態(tài)碼的簡短描述。2.2.4HTTP響應(yīng)格式

狀態(tài)行響應(yīng)狀態(tài)碼代表服務(wù)器的響應(yīng)狀態(tài),它的作用是告知瀏覽器請求Web資源的結(jié)果,如請求成功、請求異常、服務(wù)器處理錯誤等。響應(yīng)狀態(tài)碼說明100~199表示服務(wù)器成功接收部分請求,要求瀏覽器繼續(xù)提交剩余請求才能完成整個處理過程200~299表示服務(wù)器成功接收請求并已完成整個處理過程。常見狀態(tài)碼為200,表示W(wǎng)eb服務(wù)器成功處理了請求300~399表示未完成請求,要求瀏覽器進(jìn)一步細(xì)化請求。常見的狀態(tài)碼有302(表示請求的頁面臨時(shí)轉(zhuǎn)移至新地址)、307(表示請求的資源臨時(shí)從其他位置響應(yīng))和304(表示使用緩存資源)400~499表示瀏覽器發(fā)送了錯誤的請求,常見的狀態(tài)碼有404(表示服務(wù)器無法找到被請求的頁面)和403(表示服務(wù)器拒絕訪問,權(quán)限不夠)500~599表示W(wǎng)eb服務(wù)器出現(xiàn)錯誤,常見的狀態(tài)碼為500,表示本次請求未完成,原因在于服務(wù)器遇到不可預(yù)知的情況2.2.4HTTP響應(yīng)格式

響應(yīng)頭狀態(tài)行下面的部分便是若干個響應(yīng)頭信息,關(guān)于響應(yīng)頭中的常用字段以及常用值的介紹如下。Cache-Control表示服務(wù)器告知瀏覽器當(dāng)前的HTTP響應(yīng)是否可以緩存。Connection表示瀏覽器是否使用持久HTTP連接。Content-Encoding表示服務(wù)器對特定媒體類型的數(shù)據(jù)進(jìn)行壓縮。Content-Type表示服務(wù)器告知瀏覽器實(shí)際返回的內(nèi)容的內(nèi)容類型。2.2.4HTTP響應(yīng)格式

響應(yīng)正文響應(yīng)正文是服務(wù)器返回的具體數(shù)據(jù),常見的數(shù)據(jù)是HTML源代碼。瀏覽器在接收到HTTP響應(yīng)后,會根據(jù)響應(yīng)正文的不同類型進(jìn)行不同的處理。如果響應(yīng)正文是DOC文檔,這時(shí)瀏覽器會借助安裝在本機(jī)的Word程序打開這份文檔;如果響應(yīng)正文是RAR壓縮文檔,這時(shí)瀏覽器會彈出一個下載窗口讓用戶下載解壓軟件;如果響應(yīng)正文是HTML文檔,這時(shí)瀏覽器會在自身的窗口中展示該文檔。2.2.4HTTP響應(yīng)格式網(wǎng)頁基礎(chǔ)2.3熟悉網(wǎng)頁基礎(chǔ)知識,能夠區(qū)分HTML、CSS和JavaScript三者的區(qū)別學(xué)習(xí)目標(biāo)2.3.1網(wǎng)頁開發(fā)技術(shù)

HTMLHTML的英文全稱HyperTextMarkupLanguage,即超文本標(biāo)記語言,是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。一個HTML文檔由一系列的HTML元素組成。2.3.1網(wǎng)頁開發(fā)技術(shù)

HTML開始標(biāo)簽、內(nèi)容、結(jié)束標(biāo)簽組合在一起便構(gòu)成了一個完整的HTML元素。開始標(biāo)簽:標(biāo)識元素的起始位置,由尖括號包裹著元素名稱。結(jié)束標(biāo)簽:標(biāo)識元素的結(jié)束位置,與開始標(biāo)簽相似,只不過在元素名稱之前多了一個/。內(nèi)容:表示元素的內(nèi)容,位于開始標(biāo)簽和結(jié)束標(biāo)簽之間。2.3.1網(wǎng)頁開發(fā)技術(shù)

HTML標(biāo)簽說明<html>表示根標(biāo)簽,用于定義HTML文檔<h1>~<h6>表示標(biāo)題標(biāo)簽,用于定義HTML標(biāo)題,其中<h1>的等級最高,<h6>的等級最低<img>表示圖像標(biāo)簽,用于定義圖像<p>表示段落標(biāo)簽,用于定義段落<a>表示鏈接標(biāo)簽,用于定義鏈接<title>用于定義HTML文檔的標(biāo)題<script>用于定義瀏覽器腳本<style>用于定義HTML文檔的樣式信息HTML常用元素2.3.1網(wǎng)頁開發(fā)技術(shù)

CSSCSS(CascadingStyleSheets)通常稱為CSS樣式或?qū)盈B樣式表,主要用于設(shè)置HTML頁面中的文本內(nèi)容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式等)以及版面的布局等外觀顯示樣式。CSS以HTML為基礎(chǔ),它不僅提供了豐富的控制字體、顏色、背景及整體排版的功能,還可以針對不同的瀏覽器設(shè)置不同的樣式。2.3.1網(wǎng)頁開發(fā)技術(shù)

JavaScriptJavaScript是一門獨(dú)立的網(wǎng)頁腳本編程語言,它可以做很多事情,但主流的應(yīng)用是在Web上創(chuàng)建網(wǎng)頁特效或驗(yàn)證信息。例如,使用JavaScript腳本語言對用戶輸入的內(nèi)容進(jìn)行驗(yàn)證,如果用戶在用戶名和密碼文本框中未輸入任何信息,單擊“登錄”按鈕后將彈出相應(yīng)的提示信息。2.3.1網(wǎng)頁開發(fā)技術(shù)了解網(wǎng)頁結(jié)構(gòu)的組成,能夠說出一個網(wǎng)頁由哪些部分組成學(xué)習(xí)目標(biāo)2.3.2網(wǎng)頁的結(jié)構(gòu)2.3.2網(wǎng)頁的結(jié)構(gòu)HTML頁面中使用文檔對象模型(DocumentObjectModel,簡稱DOM)來描述HTML頁面的層次結(jié)構(gòu)。DOM出現(xiàn)的目的是將JavaScript和HTML文檔的內(nèi)容聯(lián)系起來,通過使用DOM可以在HTML文檔中添加、移除和操作各種元素。根據(jù)萬維網(wǎng)聯(lián)盟(WorldWideWebConsortium,簡稱W3C)的HTMLDOM標(biāo)準(zhǔn),HTMLDOM由節(jié)點(diǎn)組成,HTML文檔的所有內(nèi)容都是節(jié)點(diǎn),整個HTML文檔是一個文檔節(jié)點(diǎn),每個HTML元素是元素節(jié)點(diǎn),每個HTML屬性是屬性節(jié)點(diǎn),每個注釋是注釋節(jié)點(diǎn)。2.3.2網(wǎng)頁的結(jié)構(gòu)把一個HTML文檔中的所有節(jié)點(diǎn)組織在一起,就構(gòu)成了一棵HTMLDOM樹,這些節(jié)點(diǎn)之間存在層級關(guān)系。熟悉網(wǎng)頁分類,能夠說明什么是靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁

學(xué)習(xí)目標(biāo)2.3.3網(wǎng)頁的分類

靜態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類靜態(tài)網(wǎng)頁中包含的諸如文本、圖像、FLASH動畫、超鏈接等內(nèi)容,在編寫網(wǎng)頁源代碼時(shí)已經(jīng)確定,基本上不會發(fā)生變化,除非網(wǎng)頁源代碼被重新修改。

靜態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類靜態(tài)網(wǎng)頁具有以下幾個特點(diǎn)。靜態(tài)網(wǎng)頁的內(nèi)容相對穩(wěn)定,一經(jīng)上傳至網(wǎng)站服務(wù)器,無論是否有用戶訪問內(nèi)容都會一直保存在網(wǎng)站服務(wù)器上。靜態(tài)網(wǎng)頁的訪問速度快,訪問過程中無須連接數(shù)據(jù)庫。靜態(tài)網(wǎng)頁沒有數(shù)據(jù)庫的支持,內(nèi)容更新與維護(hù)比較復(fù)雜。靜態(tài)網(wǎng)頁的交互性較差,在功能方面有較大的限制。

動態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類動態(tài)網(wǎng)頁相比靜態(tài)網(wǎng)頁,動態(tài)網(wǎng)頁有數(shù)據(jù)庫支撐、包含程序以及提供與用戶交互功能,如用戶登錄、用戶注冊、信息查詢等功能,這些功能根據(jù)用戶傳入不同參數(shù)網(wǎng)頁會顯示不同數(shù)據(jù)。

動態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類動態(tài)網(wǎng)頁具有以下幾個特點(diǎn)。動態(tài)網(wǎng)頁一般以數(shù)據(jù)庫技術(shù)為基礎(chǔ)。動態(tài)網(wǎng)頁并不是獨(dú)立存在于服務(wù)器上的網(wǎng)頁文件,只有當(dāng)用戶請求時(shí)服務(wù)器才會返回一個完整的網(wǎng)頁。采用動態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實(shí)現(xiàn)更多的功能,如用戶注冊、用戶登錄、在線調(diào)查、用戶管理、訂單管理等。多學(xué)一招jQuery是一個快速、簡潔的JavaScript框架,該框架中封裝了JavaScript常用的功能代碼,并對一些功能進(jìn)行了優(yōu)化,包括HTML文檔操作、事件處理、動畫設(shè)計(jì)等。Ajax(異步JavaScript和XML)是一種用于創(chuàng)建又快又好、以及交互性強(qiáng)的Web應(yīng)用程序的技術(shù)。使用了Ajax技術(shù)的Web應(yīng)用程序能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載整個頁面,這使得該程序能夠快速地回應(yīng)用戶的操作。DHTML是DynamicHTML的簡稱,它其實(shí)并不是一門新的語言,而是HTML、CSS和客戶端腳本的集成。DHTML可以通過客戶端腳本改變網(wǎng)頁元素(HTML、CSS,或者二者皆被改變)。動態(tài)網(wǎng)頁上使用的技術(shù)熟悉網(wǎng)頁數(shù)據(jù)的格式,能夠說明什么是XML和JSON學(xué)習(xí)目標(biāo)2.3.4網(wǎng)頁數(shù)據(jù)的格式互聯(lián)網(wǎng)中包含了許多數(shù)據(jù),這些數(shù)據(jù)的格式一般分為非結(jié)構(gòu)化數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù),其中非結(jié)構(gòu)化數(shù)據(jù)是指數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型,不方便使用數(shù)據(jù)庫二維表結(jié)構(gòu)表現(xiàn)的數(shù)據(jù),包括文本、圖片、HTML等;結(jié)構(gòu)化數(shù)據(jù)是方便使用二維表結(jié)構(gòu)表現(xiàn)的數(shù)據(jù),這種數(shù)據(jù)嚴(yán)格遵循數(shù)據(jù)格式與長度規(guī)范,包括XML和JSON等。2.3.4網(wǎng)頁數(shù)據(jù)的格式

XML2.3.4網(wǎng)頁數(shù)據(jù)的格式XML是ExtensibleMarkupLanguage的縮寫,它是一種類似于HTML的標(biāo)記語言,稱為可擴(kuò)展標(biāo)記語言??蓴U(kuò)展指的是用戶可以按照XML規(guī)則自定義標(biāo)記。在XML文檔中,每個元素由開始標(biāo)記和結(jié)束標(biāo)記組成,必須是成對出現(xiàn)的,通過元素的嵌套關(guān)系可以很準(zhǔn)確地描述具有樹狀層次結(jié)構(gòu)的復(fù)雜信息。

JSON2.3.4網(wǎng)頁數(shù)據(jù)的格式JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式,它采用完全獨(dú)立于編程語言的文本格式存儲和表示數(shù)據(jù)。JSON數(shù)據(jù)寫為名稱/值對,格式為“名稱:值”。HTTP抓包工具——Fiddler2.4熟悉Fiddler的工作原理,能夠定義Fiddler的工作原理學(xué)習(xí)目標(biāo)2.4HTTP抓包工具——Fiddler網(wǎng)絡(luò)爬蟲實(shí)質(zhì)上是模擬瀏覽器向Web服務(wù)器發(fā)送請求,對于一些簡單的網(wǎng)絡(luò)請求,我們可以通過觀察URL地址構(gòu)造請求,但對于一些稍復(fù)雜的網(wǎng)絡(luò)請求,仍然通過觀察URL地址將無法構(gòu)造正確的請求,因此我們需要對這些復(fù)雜的網(wǎng)絡(luò)請求進(jìn)行捕獲分析,這個操作也稱為抓包。常用的抓包工具有Fiddler、Charles、Wireshark等,其中Fiddler在Windows平臺上應(yīng)用較多。2.4.1Fiddler的工作原理2.4.1Fiddler的工作原理Fiddler是一個HTTP協(xié)議調(diào)試代理工具,它能夠記錄瀏覽器和Web服務(wù)器之間的所有HTTP請求,支持對網(wǎng)絡(luò)傳輸過程中發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作。與瀏覽器自帶的開發(fā)者工具(比如Chrome瀏覽器的F12工具)相比,F(xiàn)iddler具有以下特點(diǎn)??梢员O(jiān)聽HTTP和HTTPS的流量,捕獲瀏覽器發(fā)送的網(wǎng)絡(luò)請求??梢圆榭床东@的請求信息??梢詡卧鞛g覽器請求發(fā)送給服務(wù)器,也可以偽造一個服務(wù)器的響應(yīng)發(fā)送給瀏覽器,主要用于前后端調(diào)試??梢詼y試網(wǎng)站的性能??梢詫贖TTPS協(xié)議的網(wǎng)絡(luò)會話進(jìn)行解密。支持第三方插件,可以極大地提高工作效率。2.4.1Fiddler的工作原理Fiddler是以代理服務(wù)器的形式工作,它會在瀏覽器和Web服務(wù)器之間建立代理服務(wù)器,這個代理服務(wù)器默認(rèn)使用的代理地址為,端口為8888。當(dāng)Fiddler啟動時(shí)會自動設(shè)置代理,退出時(shí)會自動注銷代理,這樣就不會影響其他程序。掌握Fiddler的下載與安裝,能夠完成Fiddler的下載與安裝學(xué)習(xí)目標(biāo)2.4.2Fiddler的下載與安裝2.4.2Fiddler的下載與安裝步驟1步驟2步驟3步驟4訪問Fiddler官網(wǎng)打開瀏覽器,在百度頁面的搜索框中輸入關(guān)鍵字“Fiddler”,進(jìn)入Fiddler官網(wǎng)主頁面。在該頁面中單擊頂部菜單欄中的FIDDLERTOOLS選項(xiàng)彈出一個下拉菜單。2.4.2Fiddler的下載與安裝步驟2步驟1步驟3步驟4訪問FiddlerClassic產(chǎn)品主頁在官網(wǎng)中單擊“FiddlerClassic”,進(jìn)入FiddlerClassic產(chǎn)品主頁。2.4.2Fiddler的下載與安裝步驟3步驟1步驟2步驟4下載FiddlerClassic進(jìn)入FiddlerClassic產(chǎn)品下載頁面。第1個下拉列表框中選擇FiddlerClassic的用途。第2個文本框中填寫郵箱地址。第3個下拉列表框中選擇國家或地區(qū),并且勾選IaccepttheFiddlerEndUserLicenseAgreement復(fù)選框,接受用戶許可協(xié)議。2.4.2Fiddler的下載與安裝步驟4步驟1步驟2步驟3安裝FiddlerSetup.exe下載完成后,雙擊FiddlerSetup.exe

彈出Fiddler用戶協(xié)議界面。2.4.2Fiddler的下載與安裝步驟5步驟6選擇安裝路徑單擊“IAgree”按鈕,進(jìn)入選擇Fiddler安裝路徑的界面。2.4.2Fiddler的下載與安裝步驟6步驟5安裝完成安裝路徑設(shè)置完成之后,單擊“Install”按鈕開始安裝Fiddler,直至彈出網(wǎng)頁并顯示“Installationwassuccessful!”說明Fiddler安裝成功。熟悉Fiddler的界面,能夠說明Fiddler界面常用功能的作用學(xué)習(xí)目標(biāo)2.4.3Fiddler界面詳解2.4.3Fiddler界面詳解Fiddler操作界面共劃分為7個區(qū)域,分別為菜單欄、工具欄、會話窗口、Request窗口、Response窗口、命令行窗口和狀態(tài)欄。

工具欄2.4.3Fiddler界面詳解圖標(biāo)說明作用備注為當(dāng)前會話添加備注回放可以再次發(fā)送某個請求清除界面信息清除會話窗口列表的全部或部分請求bug調(diào)試單擊該按鈕可繼續(xù)執(zhí)行斷點(diǎn)后的代碼模式切換切換Fiddler的工作模式(默認(rèn)是緩沖模式)解壓請求對HTTP請求的內(nèi)容進(jìn)行解壓會話保存設(shè)置保存會話的數(shù)量(默認(rèn)是保存所有)

工具欄2.4.3Fiddler界面詳解圖標(biāo)說明作用過濾請求設(shè)置只捕獲某一客戶端發(fā)送的請求,拖拽該圖標(biāo)到該客戶端的任意一個請求后會創(chuàng)建一個過濾器,右擊該圖標(biāo)會清除之前設(shè)置的過濾器查找查找特定內(nèi)容會話保存將所有會話保存到SAZ文件中截取屏幕既可以立即截取屏幕,也可以計(jì)時(shí)后截取屏幕計(jì)時(shí)器具備計(jì)時(shí)功能瀏覽器若選中某個會話,則可以使用IE瀏覽器或Chrome瀏覽器打開該會話清除緩存清空WinINET緩存。按下CTRL鍵并單擊該按鈕還會清除WinINET中保存的永久cookie

工具欄2.4.3Fiddler界面詳解圖標(biāo)說明作用編碼和解碼將文本進(jìn)行編碼和解碼窗體分離將一個窗體分離顯示顯示系統(tǒng)狀態(tài)顯示當(dāng)前系統(tǒng)是在線還是離線狀態(tài)。如果是在線狀態(tài),將鼠標(biāo)懸停在該按鈕上方時(shí)會顯示本地主機(jī)名和IP地址刪除工具欄刪除工具欄(如果要恢復(fù)顯示工具欄,可以在菜單欄中選擇“View”→“ShowBar”)

會話窗口2.4.3Fiddler界面詳解會話窗口負(fù)責(zé)展示所有采用了HTTP/HTTPS協(xié)議的會話列表。會話代表瀏覽器與服務(wù)器的一次通信過程,這個過程中產(chǎn)生了多個HTTP請求和HTTP響應(yīng)。名稱說明#Fiddler生成的IDResult響應(yīng)的狀態(tài)碼Protocol當(dāng)前會話使用的協(xié)議Host接收請求的服務(wù)器和主機(jī)名和端口號URL請求的URL路徑、文件和查詢字符串Body響應(yīng)體中包含的字節(jié)數(shù)Caching響應(yīng)頭中Expires和Cache-ControlContent-Type響應(yīng)中Content-Type的值Proecess對應(yīng)本地Windows的進(jìn)程Comments通過工具欄Comment按鈕設(shè)置的注釋信息CustomFiddlerScript所設(shè)置的ui-CustomColumn標(biāo)志位的值

會話窗口2.4.3Fiddler界面詳解會話窗口中會使用不同的圖標(biāo)標(biāo)記Fiddler捕獲的會話信息,包括HTTP狀態(tài)、響應(yīng)類型、數(shù)據(jù)流類型等。圖標(biāo)說明通用的成功響應(yīng)請求使用CONNECT方法,使用該方法構(gòu)建傳送加密的HTTPS數(shù)據(jù)流通道響應(yīng)是JSON文件響應(yīng)狀態(tài)是HTTP/304,表示客戶端緩存的副本已經(jīng)是最新的響應(yīng)是腳本格式使用POST方法向服務(wù)器發(fā)送數(shù)據(jù)

會話窗口2.4.3Fiddler界面詳解會話窗口中會使用不同的圖標(biāo)標(biāo)記Fiddler捕獲的會話信息,包括HTTP狀態(tài)、響應(yīng)類型、數(shù)據(jù)流類型等。圖標(biāo)說明響應(yīng)是圖像文件會話被客戶端、Fiddler或服務(wù)器中止響應(yīng)的是CSS文件響應(yīng)的是XML文件響應(yīng)是服務(wù)器錯誤響應(yīng)狀態(tài)碼為300、301、302、303或307

Request窗口2.4.3Fiddler界面詳解Request窗口默認(rèn)選中了“Inspectors”選項(xiàng),Inspectors選項(xiàng)對應(yīng)的面板中顯示了當(dāng)前所選會話的請求信息。名稱說明Headers用分級視圖顯示由客戶端發(fā)送到服務(wù)器的HTTP請求的請求頭部信息,包括客戶端信息、Cookie、傳輸狀態(tài)等TextView以文本的形式顯示POST請求的請求數(shù)據(jù)WebForms顯示GET請求的URL參數(shù)或POST請求的請求數(shù)據(jù)HexView用十六進(jìn)制數(shù)據(jù)顯示請求Auth顯示響應(yīng)頭中的Proxy-Authorization(代理身份驗(yàn)證)和Authorization(授權(quán))信息Raw將整個請求顯示為純文本JSON顯示JSON格式的文件XML將選中的請求和響應(yīng)解釋成一個XML格式的字符串,顯示XML文檔節(jié)點(diǎn)的樹形圖

Response窗口2.4.3Fiddler界面詳解Response窗口顯示了當(dāng)前所選會話的響應(yīng)信息。名稱說明Transformer顯示響應(yīng)的編碼信息Headers用分級視圖顯示響應(yīng)頭部信息TextViewSyntaxView以文本的形式顯示響應(yīng)數(shù)據(jù)根據(jù)多個指定規(guī)則高亮顯示多種類型的請求文本和響應(yīng)文本ImageView如果請求的是圖片資源,則顯示響應(yīng)的圖片HexView用十六進(jìn)制數(shù)據(jù)顯示響應(yīng)

Response窗口2.4.3Fiddler界面詳解Response窗口顯示了當(dāng)前所選會話的響應(yīng)信息。名稱說明WebView顯示響應(yīng)在Web瀏覽器中的預(yù)覽效果Auth顯示響應(yīng)頭部中的Proxy-Authorization和Authorization信息Caching顯示本次請求的緩存信息Cookies顯示任何發(fā)送出出去的請求的Cookie中的內(nèi)容Raw將整個響應(yīng)顯示為純文本JSON顯示JSON格式的文件XML如果響應(yīng)體是XML格式,就是用分級的XML樹形圖來顯示它熟悉Fiddler的界面,能夠說明Fiddler界面常用功能的作用學(xué)習(xí)目標(biāo)2.4.4Fiddler捕獲HTTPS頁面的設(shè)置前面使用Fiddler捕獲的會話都是基于HTTP協(xié)議的,之所以出現(xiàn)這種情況是因?yàn)镕iddler默認(rèn)不支持基于HTTPS協(xié)議的會話。如果希望Fiddler工具能夠解密HTTPS協(xié)議的會話,我們還需要對Fiddler工具進(jìn)行一些設(shè)置。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟1步驟2步驟3步驟4打開Options對話框在Fiddler的Tools菜單中選擇Options…選項(xiàng),彈出Options窗口對話框。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟2步驟1步驟3步驟4切換至HTTPS選項(xiàng)的Options對話框2.4.4Fiddler捕獲HTTPS頁面的設(shè)置在Options對話框中選擇“HTTPS”選項(xiàng)卡。CaptureHTTPSCONNECTs和DecryptHTTPStraffic,其中CaptureHTTPSCONNECTs復(fù)選框用于設(shè)置Fiddler工具是否捕獲HTTPS連接,默認(rèn)為勾選狀態(tài);DecryptHTTPStraffic復(fù)選框用于解密HTTPS通信,默認(rèn)為未勾選狀態(tài)。步驟3步驟1步驟2步驟4勾選DecryptHTTPStraffic復(fù)選框后的Options對話框2.4.4Fiddler捕獲HTTPS頁面的設(shè)置勾選HTTPS選項(xiàng)中的DecryptHTTPStraffic復(fù)選框,在該復(fù)選框的下方增加了若干選項(xiàng)。...fromallprocesses表示從所有進(jìn)程捕獲。Ignoreservercertificateerrors(unsafe)復(fù)選框用于設(shè)置是否忽略服務(wù)器證書錯誤。步驟4步驟1步驟2步驟3設(shè)置HTTP選項(xiàng)勾選Ignoreservercertificateerrors(unsafe),忽略服務(wù)器證書錯誤。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟5步驟6步驟7步驟8單擊Actions按鈕為Fiddler配置Windows信任根證書以解決安全警告,單擊Actions按鈕彈出選項(xiàng)列表。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟6步驟5步驟7步驟8確認(rèn)信任Fiddler根證書在彈出的選項(xiàng)列表中選擇TrustRootCertificate(受信任的根證書),彈出確認(rèn)是否信任Fiddler根證書的對話框。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟7步驟5步驟6步驟8切換至Connections選項(xiàng)的Options窗口單擊“Yes”按鈕,確認(rèn)信任根證書,跳轉(zhuǎn)回設(shè)置好HTTP選項(xiàng)的Options對話框。在Options對話框中單擊“Connections”選項(xiàng),切換至Connections選項(xiàng)的Options對話框。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置步驟8步驟5步驟6步驟7設(shè)置允許遠(yuǎn)程連接勾選Allowremotecomputerstoconnect復(fù)選框,設(shè)置允許遠(yuǎn)程連接,彈出EnablingRemoteAccess對話框。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置配置完成單擊“確定”按鈕跳轉(zhuǎn)回Connections選項(xiàng)的Options對話框,此時(shí)該對話框中的Allowremotecomputerstoconnect復(fù)選框已經(jīng)被勾選。2.4.4Fiddler捕獲HTTPS頁面的設(shè)置單擊“OK”按鈕完成配置。為了使配置生效還需重啟Fiddler。步驟9多學(xué)一招瀏覽器安裝SwitchyOmega插件使用Fiddler捕獲Chrome瀏覽器發(fā)送的會話后,瀏覽器會自動將Fiddler設(shè)為代理服務(wù)器,但如果Fiddler非正常退出,則可能會導(dǎo)致Chrome瀏覽器的代理服務(wù)器無法恢復(fù)正常,這時(shí)就需要手動地更改Chrome的代理服務(wù)器,相對比較繁瑣。為了解決這個問題,我們可以為Chrome瀏覽器安裝SwitchyOmega插件,通過該插件方便管理Chrome瀏覽器的代理服務(wù)器。在Github上搜索SwitchyOmega插件并進(jìn)行下載。SwitchyOmega插件的下載頁面。多學(xué)一招單擊SwitchyOmega_Chromium.crx開始下載,下載完成之后便可以在Chrome瀏覽器中進(jìn)行安裝。步驟1步驟3步驟4打開Chrome擴(kuò)展程序頁面打開Chrome瀏覽器,單擊右上角的按鈕彈出菜單列表,在菜單列表中選擇“更多工具”→“擴(kuò)展程序”選項(xiàng),進(jìn)入擴(kuò)展程序頁面。多學(xué)一招步驟1步驟2步驟1步驟4安裝并開啟將下載好的SwitchyOmega.crx文件拖入到擴(kuò)展程序頁面中,并打開該擴(kuò)展程序的開啟按鈕,此時(shí)擴(kuò)展程序頁面的右上角顯示了該擴(kuò)展程序的圖標(biāo)。多學(xué)一招步驟2步驟2步驟3步驟1步驟2進(jìn)入SwitchyOmega選項(xiàng)頁面單擊圖標(biāo),在打開的菜單列表中選擇“選項(xiàng)”進(jìn)入SwitchyOmega選項(xiàng)頁面。多學(xué)一招步驟3步驟4步驟1步驟2多學(xué)一招步驟4步驟4步驟3新建情境模式單擊“新建情景模式...”鏈接,彈出新建情景模式對話框窗口,在該對話框窗口中填寫情景模式名稱為Fiddler,選擇情景模式的類型為代理服務(wù)器。多學(xué)一招步驟5步驟6步驟7單擊“創(chuàng)建”按鈕新建情景模式,跳轉(zhuǎn)回添加了情景模式Fiddler的頁面,這里將代理協(xié)議設(shè)置為HTTP,代理服務(wù)器設(shè)置為,代理端口設(shè)置為8888,單擊頁面左側(cè)的“應(yīng)用選項(xiàng)”進(jìn)行保存。設(shè)置Fiddler情境模式多學(xué)一招步驟6步驟5步驟7選擇Fiddler代理單擊頁面右上角的

圖標(biāo)彈出選項(xiàng)列表,在該列表中選擇Fiddler代理。多學(xué)一招步驟7步驟5步驟6使用Fiddler捕獲網(wǎng)絡(luò)請求再次使用Chrome瀏覽器訪問百度首頁,便可以在Fiddler中看到捕獲的訪問百度首頁時(shí)發(fā)送的網(wǎng)絡(luò)請求。熟悉Fiddler的使用,能夠使用Fiddler完成對有道翻譯請求的捕獲學(xué)習(xí)目標(biāo)2.4.5Fiddler的基本使用了解了Fiddler的工作原理、界面、捕獲HTTPS頁面的設(shè)置之后,我們以有道翻譯為例,為大家演示如何使用Fiddler工具捕獲翻譯單詞時(shí)發(fā)送的請求。2.4.5Fiddler的基本使用步驟1步驟2步驟3步驟4訪問有道翻譯并翻譯單詞在瀏覽器中打開有道翻譯頁面,該頁面中有兩個灰色的區(qū)域,左側(cè)區(qū)域用于輸入要翻譯的文本,右側(cè)區(qū)域用于展示翻譯后的結(jié)果。在左側(cè)區(qū)域中輸入python,單擊“翻譯”按鈕后,右側(cè)區(qū)域展示了python的翻譯結(jié)果。2.4.5Fiddler的基本使用步驟2步驟1步驟3步驟4使用Fiddler捕獲請求啟動Fiddler工具,清空會話窗口中的會話列表。在瀏覽器中再次單擊“翻譯”按鈕,切換到Fiddler后可以看到捕獲的所有網(wǎng)絡(luò)請求。2.4.5Fiddler的基本使用步驟3步驟1步驟2步驟4查看請求信息和響應(yīng)信息在Fiddler右側(cè)的Request窗口和Response窗口中分別顯示了該網(wǎng)絡(luò)請求的請求信息與響應(yīng)信息。2.4.5Fiddler的基本使用步驟4步驟1步驟2步驟3查看請求數(shù)據(jù)和翻譯python后的結(jié)果在Request窗口中單擊“WebForms”選項(xiàng)打開WebForms面板,該面板中展示了請求數(shù)據(jù)的具體內(nèi)容;在Response窗口中單擊“JSON”選項(xiàng)卡打開JSON面板,該面板中展示了翻譯python后的結(jié)果。2.4.5Fiddler的基本使用本章小結(jié)在本章中,我們首先介紹了瀏覽器加載網(wǎng)頁的過程,然后介紹了HTTP相關(guān)的基礎(chǔ)知識,如URL、HTTP、HTTPS,HTTP請求格式及HTTP響應(yīng)格式,接著介紹了網(wǎng)頁相關(guān)的基礎(chǔ)知識,最后介紹了使用Fiddler捕獲瀏覽器的的會話,從而分析出瀏覽器需要準(zhǔn)備怎樣的請求,以及如何處理Web服務(wù)器的響應(yīng)。希望讀者通過本章內(nèi)容的學(xué)習(xí),能理解網(wǎng)頁請求的原理,熟練地使用Fiddler抓包工具,為后面的學(xué)習(xí)奠定扎實(shí)的基礎(chǔ)。本章小結(jié)第3章抓取靜態(tài)網(wǎng)頁數(shù)據(jù)《Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解抓取靜態(tài)網(wǎng)頁的實(shí)現(xiàn)技術(shù),能夠說出每種實(shí)現(xiàn)技術(shù)的特點(diǎn)掌握Requests中基本請求的發(fā)送方式,能夠向服務(wù)器發(fā)送GET請求和POST請求掌握Requests中響應(yīng)內(nèi)容的處理方式,能夠根據(jù)需要獲取響應(yīng)內(nèi)容學(xué)習(xí)目標(biāo)/Target掌握Requests中請求頭的定制方式,能夠?yàn)镚ET請求和POST請求定制請求頭掌握Requests中代理服務(wù)器的設(shè)置方式,能夠?yàn)檎埱笤O(shè)置代理服務(wù)器掌握Requests中異常的處理方式,能夠處理請求超時(shí)異常章節(jié)概述/Summary靜態(tài)網(wǎng)頁是早期網(wǎng)站中經(jīng)常用到的頁面,這類網(wǎng)頁的特點(diǎn)是所有數(shù)據(jù)都直接呈現(xiàn)在網(wǎng)頁源代碼中,對于網(wǎng)絡(luò)爬蟲來說,只要獲取了靜態(tài)網(wǎng)頁的源代碼,就相當(dāng)于抓取了靜態(tài)網(wǎng)頁的數(shù)據(jù)。本章將針對抓取靜態(tài)網(wǎng)頁數(shù)據(jù)的相關(guān)內(nèi)容進(jìn)行詳細(xì)地講解。目錄/Contents3.13.23.3抓取靜態(tài)網(wǎng)頁的實(shí)現(xiàn)技術(shù)發(fā)送基本請求處理復(fù)雜請求目錄/Contents3.43.53.6設(shè)置代理服務(wù)器處理異常實(shí)踐項(xiàng)目:抓取黑馬程序員論壇的數(shù)據(jù)抓取靜態(tài)網(wǎng)頁的技術(shù)3.1了解抓取靜態(tài)網(wǎng)頁的實(shí)現(xiàn)技術(shù),能夠說出每種實(shí)現(xiàn)技術(shù)的特點(diǎn)學(xué)習(xí)目標(biāo)3.1抓取靜態(tài)網(wǎng)頁的技術(shù)靜態(tài)網(wǎng)頁是HTML格式的網(wǎng)頁,這種網(wǎng)頁在瀏覽器中呈現(xiàn)的內(nèi)容都會體現(xiàn)在源代碼中,此時(shí)我們?nèi)粢ト§o態(tài)網(wǎng)頁的數(shù)據(jù),只需要獲得網(wǎng)頁的源代碼即可。網(wǎng)絡(luò)爬蟲抓取靜態(tài)網(wǎng)頁數(shù)據(jù)的過程就是獲得網(wǎng)頁源代碼的過程,這個過程模仿用戶通過瀏覽器訪問網(wǎng)頁的過程,包括向Web服務(wù)器發(fā)送HTTP請求、服務(wù)器對HTTP請求做出響應(yīng)并返回網(wǎng)頁源代碼。3.1抓取靜態(tài)網(wǎng)頁的技術(shù)為幫助開發(fā)人員抓取靜態(tài)網(wǎng)頁數(shù)據(jù),減少開發(fā)人員的開發(fā)時(shí)間,Python提供了一些功能齊全的庫,包括urllib、urllib3和Requests,其中urllib是Python內(nèi)置庫,無須安裝便可以直接在程序中使用;urllib3和Requests都是第三方庫,需要另行安裝后才可以在程序中使用。urlliburllib是Python最早內(nèi)置的HTTP客戶端庫,它涵蓋了基礎(chǔ)的網(wǎng)絡(luò)請求功能。urllib3urllib3是一個強(qiáng)大的、用戶友好的Python的HTTP客戶端庫,包括線程安全、連接池、客戶端TLS/SSL驗(yàn)證、壓縮編碼等功能。RequestsRequests基于urllib3編寫,該庫會在請求完后重復(fù)使用Socket套接字,不會與服務(wù)器斷開連接,而urllib庫會在請求完之后與服務(wù)器斷開連接。3.1抓取靜態(tài)網(wǎng)頁的技術(shù)本書后續(xù)選擇用Requests庫進(jìn)行開發(fā),截至2021年9月,Requests庫的最新版本是2.25.1。值得一提的是,Requests庫是第三方庫,它可以通過pip工具進(jìn)行安裝,如此便可以在導(dǎo)入程序后直接使用。Requests庫的安裝命令如下。pipinstallrequests3.1抓取靜態(tài)網(wǎng)頁的技術(shù)發(fā)送基本請求3.2掌握Requests中基本請求的發(fā)送方式,能夠向服務(wù)器發(fā)送GET請求學(xué)習(xí)目標(biāo)3.2.1發(fā)送GET請求在Requests庫中,GET請求通過調(diào)用get()函數(shù)發(fā)送,該函數(shù)會根據(jù)傳入的URL構(gòu)建一個請求(每個請求都是Request類的對象),將該請求發(fā)送給服務(wù)器。get()函數(shù)的聲明如下:3.2.1發(fā)送GET請求get(url,params=None,headers=None,cookies=None,verify=True,proxies=None,timeout=None,**kwargs)url:必選參數(shù),表示請

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論