




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第1章認識網(wǎng)絡爬蟲《Python網(wǎng)絡爬蟲基礎教程》第1章認識網(wǎng)絡爬蟲第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)絡爬蟲速度第7章存儲數(shù)據(jù)第8章驗證碼識別第9章初識網(wǎng)絡爬蟲框架Scrapy第10章Scrapy核心組件與CrawlSpider類第11章分布式網(wǎng)絡爬蟲Scrapy-Redis全套PPT課件學習目標/Target熟悉網(wǎng)絡爬蟲的概念及分類,能夠歸納通用網(wǎng)絡爬蟲和聚焦網(wǎng)絡爬蟲的區(qū)別了解網(wǎng)絡爬蟲的應用場景,能夠列舉至少3個網(wǎng)絡爬蟲的應用場景熟悉網(wǎng)絡爬蟲的Robots協(xié)議,能夠說明robots.txt文件中每個選項的含義熟悉防網(wǎng)絡爬蟲的應對策略,能夠列舉至少3個應對防網(wǎng)絡爬蟲的策略學習目標/Target掌握網(wǎng)絡爬蟲的工作原理,能夠定義通用網(wǎng)絡爬蟲和聚焦網(wǎng)絡爬蟲的工作原理熟悉網(wǎng)絡爬蟲的工作流程,能夠歸納網(wǎng)絡爬蟲抓取網(wǎng)頁的完整流程了解網(wǎng)絡爬蟲的實現(xiàn)技術,能夠說出使用Python實現(xiàn)網(wǎng)絡爬蟲有哪些優(yōu)勢熟悉網(wǎng)絡爬蟲的實現(xiàn)流程,能夠歸納使用Python實現(xiàn)網(wǎng)絡爬蟲的流程章節(jié)概述/Summary隨著網(wǎng)絡的蓬勃發(fā)展,萬維網(wǎng)成為大量信息的載體,如何有效提取并利用這些信息成為一個巨大的挑戰(zhàn)。網(wǎng)絡爬蟲作為一種自動采集數(shù)據(jù)技術,憑借自身強大的自動提取網(wǎng)頁數(shù)據(jù)的能力,成為當下互聯(lián)網(wǎng)高效、靈活地收集數(shù)據(jù)的解決方案之一。本章主要對網(wǎng)絡爬蟲的基礎知識進行詳細地講解。目錄/Contents1.11.21.3什么是網(wǎng)絡爬蟲網(wǎng)絡爬蟲的應用場景網(wǎng)絡爬蟲合法性探究1.41.5網(wǎng)絡爬蟲的工作原理和流程網(wǎng)絡爬蟲實現(xiàn)技術探究什么是網(wǎng)絡爬蟲1.1熟悉網(wǎng)絡爬蟲的概念及分類,能夠歸納通用網(wǎng)絡爬蟲和聚焦網(wǎng)絡爬蟲的區(qū)別學習目標1.1什么是網(wǎng)絡爬蟲1.1什么是網(wǎng)絡爬蟲網(wǎng)絡爬蟲(WebCrawler)又稱網(wǎng)絡蜘蛛、網(wǎng)絡機器人,它是一種按照一定規(guī)則,自動瀏覽萬維網(wǎng)的程序或腳本。通俗地講,網(wǎng)絡爬蟲就是一個模擬真人瀏覽萬維網(wǎng)行為的程序,這個程序可以代替真人自動請求萬維網(wǎng),并接收從萬維網(wǎng)返回的數(shù)據(jù)。與真人瀏覽萬維網(wǎng)相比,網(wǎng)絡爬蟲能夠瀏覽的信息量更大,效率也更高。
網(wǎng)絡爬蟲概念1.1什么是網(wǎng)絡爬蟲網(wǎng)絡爬蟲歷經(jīng)幾十年的發(fā)展,技術變得更加多樣化,并結合不同的需求衍生出類型眾多的網(wǎng)絡爬蟲。網(wǎng)絡爬蟲按照系統(tǒng)結構和實現(xiàn)技術大致可以分為4種類型,分別是通用網(wǎng)絡爬蟲、聚焦網(wǎng)絡爬蟲、增量式網(wǎng)絡爬蟲、深層網(wǎng)絡爬蟲。
網(wǎng)絡爬蟲分類聚焦網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲增量式網(wǎng)絡爬蟲深層網(wǎng)絡爬蟲1.1什么是網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲(GeneralPurposeWebCrawler)又稱全網(wǎng)爬蟲(ScalableWebCrawler),是指訪問全互聯(lián)網(wǎng)資源的網(wǎng)絡爬蟲。通用網(wǎng)絡爬蟲是“互聯(lián)網(wǎng)時代”早期出現(xiàn)的傳統(tǒng)網(wǎng)絡爬蟲,它是搜索引擎(如百度、谷歌、雅虎等)抓取系統(tǒng)的重要組成部分,主要用于將互聯(lián)網(wǎng)中的網(wǎng)頁下載到本地,形成一個互聯(lián)網(wǎng)內(nèi)容的鏡像備份。通用網(wǎng)絡爬蟲
網(wǎng)絡爬蟲分類1.1什么是網(wǎng)絡爬蟲聚焦網(wǎng)絡爬蟲(FocusedCrawler)又稱主題網(wǎng)絡爬蟲(TopicalCrawler),是指有選擇性地訪問那些與預定主題相關網(wǎng)頁的網(wǎng)絡爬蟲,它根據(jù)預先定義好的目標,有選擇性地訪問與目標主題相關的網(wǎng)頁,獲取所需要的數(shù)據(jù)。與通用網(wǎng)絡爬蟲相比,聚焦網(wǎng)絡爬蟲只需要訪問與預定主題相關的網(wǎng)頁,這不僅減少了訪問和保存的頁面數(shù)量,而且提高了網(wǎng)頁的更新速度,可見,聚焦網(wǎng)絡爬蟲在一定程度度節(jié)省了網(wǎng)絡資源,能滿足一些特定人群采集特定領域數(shù)據(jù)的需求。
網(wǎng)絡爬蟲分類聚焦網(wǎng)絡爬蟲1.1什么是網(wǎng)絡爬蟲增量式網(wǎng)絡爬蟲(IncrementalWebCrawler)是指對已下載的網(wǎng)頁采取增量式更新,只抓取新產(chǎn)生或者已經(jīng)發(fā)生變化的網(wǎng)頁的網(wǎng)絡爬蟲。增量式網(wǎng)絡爬蟲只會抓取新產(chǎn)生的或內(nèi)容變化的網(wǎng)頁,并不會重新抓取內(nèi)容未發(fā)生變化的網(wǎng)頁,這樣可以有效地減少網(wǎng)頁的下載量,減少訪問時間和存儲空間的耗費,但是增加了網(wǎng)頁抓取算法的復雜度和實現(xiàn)難度。
網(wǎng)絡爬蟲分類增量式網(wǎng)絡爬蟲1.1什么是網(wǎng)絡爬蟲深層網(wǎng)絡爬蟲(DeepWebCrawler)是指抓取深層網(wǎng)頁的網(wǎng)絡爬蟲,它要抓取的網(wǎng)頁層次比較深,需要通過一定的附加策略才能夠自動抓取,實現(xiàn)難度較大。
網(wǎng)絡爬蟲分類深層網(wǎng)絡爬蟲網(wǎng)頁按存在方式可以分為表層網(wǎng)頁(SurfaceWeb)和深層網(wǎng)頁(DeepWeb),關于這兩類網(wǎng)頁的介紹如下。多學一招表層網(wǎng)頁是指傳統(tǒng)搜索引擎可以索引的頁面,主要以超鏈接可以到達的靜態(tài)網(wǎng)頁構成的網(wǎng)頁。深層網(wǎng)頁是指大部分內(nèi)容無法通過靜態(tài)鏈接獲取的,只能通過用戶提交一些關鍵詞才能獲取的網(wǎng)頁,如用戶注冊后內(nèi)容才可見的網(wǎng)頁。表層網(wǎng)頁與深層網(wǎng)頁網(wǎng)絡爬蟲的應用場景1.2了解網(wǎng)絡爬蟲的應用場景,能夠列舉至少3個網(wǎng)絡爬蟲的應用場景學習目標1.2網(wǎng)絡爬蟲的應用場景隨著互聯(lián)網(wǎng)信息的“爆炸”,網(wǎng)絡爬蟲漸漸為人們所熟知,并被應用到了社會生活的眾多領域。作為一種自動采集網(wǎng)頁數(shù)據(jù)的技術,很多人其實并不清楚網(wǎng)絡爬蟲具體能應用到什么場景。事實上,大多數(shù)依賴數(shù)據(jù)支撐的應用場景都離不開網(wǎng)絡爬蟲,包括搜索引擎、輿情分析與監(jiān)測、聚合平臺、出行類軟件等。1.2網(wǎng)絡爬蟲的應用場景輿情分析與監(jiān)測搜索引擎聚合平臺出行類軟件
網(wǎng)絡爬蟲的應用場景搜索引擎是通用網(wǎng)絡爬蟲最重要的應用場景之一,它會將網(wǎng)絡爬蟲作為最基礎的部分——互聯(lián)網(wǎng)信息的采集器,讓網(wǎng)絡爬蟲自動到互聯(lián)網(wǎng)中抓取數(shù)據(jù)。例如,谷歌、百度、必應等搜索引擎都是利用網(wǎng)絡爬蟲技術從互聯(lián)網(wǎng)上采集海量的數(shù)據(jù)。1.2網(wǎng)絡爬蟲的應用場景搜索引擎
網(wǎng)絡爬蟲的應用場景政府或企業(yè)通過網(wǎng)絡爬蟲技術自動采集論壇評論、在線博客、新聞媒體或微博等網(wǎng)站中的海量數(shù)據(jù),采用數(shù)據(jù)挖掘的相關方法(如詞頻統(tǒng)計、文本情感計算、主題識別等)發(fā)掘輿情熱點,跟蹤目標話題,并根據(jù)一定的標準采取相應的輿情控制與引導措施。例如,百度熱點排行榜、微博熱搜排行榜。1.2網(wǎng)絡爬蟲的應用場景
網(wǎng)絡爬蟲的應用場景輿情分析與檢測如今出現(xiàn)的很多聚合平臺,如返利網(wǎng)、慢慢買等,也是網(wǎng)絡爬蟲技術的常見的應用場景,這些平臺就是運用網(wǎng)絡爬蟲技術對一些電商平臺上的商品信息進行采集,將所有的商品信息放到自己的平臺上展示,并提供橫向數(shù)據(jù)的比較,幫助用戶尋找實惠的商品價格。例如,用戶在慢慢買平臺搜索華為智能手表后,平臺上展示了很多款華為智能手表的價格分析及價格走勢等信息。1.2網(wǎng)絡爬蟲的應用場景
網(wǎng)絡爬蟲的應用場景聚合平臺出行類軟件,比如飛豬、攜程、去哪兒等,也是網(wǎng)絡爬蟲應用比較多的場景。這類應用運用網(wǎng)絡爬蟲技術,不斷地訪問交通出行的官方售票網(wǎng)站刷新余票,一旦發(fā)現(xiàn)有新的余票便會通知用戶付款買票。不過,官方售票網(wǎng)站并不歡迎網(wǎng)絡爬蟲的這種行為,因為高頻率地訪問網(wǎng)頁極易造成網(wǎng)站出現(xiàn)癱瘓的情況。1.2網(wǎng)絡爬蟲的應用場景
網(wǎng)絡爬蟲的應用場景出行類軟件網(wǎng)絡爬蟲合法性探究1.3網(wǎng)絡爬蟲在訪問網(wǎng)站時,需要遵循“有禮貌”的原則,這樣才能與更多的網(wǎng)站建立友好關系。即便如此,網(wǎng)絡爬蟲的爬行行為仍會給網(wǎng)站增加不小的壓力,嚴重時甚至可能會影響網(wǎng)站的正常訪問。為了約束網(wǎng)絡爬蟲的惡意行為,網(wǎng)站內(nèi)部加入了一些防爬蟲措施來阻止網(wǎng)絡爬蟲。與此同時,網(wǎng)絡爬蟲也研究了防爬蟲措施的應對策略。1.3網(wǎng)絡爬蟲合法性探究熟悉網(wǎng)絡爬蟲的Robots協(xié)議,能夠說明robots.txt文件中每個選項的含義學習目標1.3.1Robots協(xié)議Robots協(xié)議又稱爬蟲協(xié)議,它是國際互聯(lián)網(wǎng)界通行的道德規(guī)范,用于保護網(wǎng)站數(shù)據(jù)和敏感信息,確保網(wǎng)站用戶的個人信息和隱私不受侵犯。為了讓網(wǎng)絡爬蟲了解網(wǎng)站的訪問范圍,網(wǎng)站管理員通常會在網(wǎng)站的根目錄下放置一個符合Robots協(xié)議的robots.txt文件,通過這個文件告知網(wǎng)絡爬蟲在抓取該網(wǎng)站時存在哪些限制,哪些網(wǎng)頁是允許被抓取的,哪些網(wǎng)頁是禁止被抓取的。
Robots協(xié)議1.3.1Robots協(xié)議當網(wǎng)絡爬蟲訪問網(wǎng)站時,應先檢查該網(wǎng)站的根目錄下是否存在robots.txt文件。若robots.txt文件不存在,則網(wǎng)絡爬蟲會訪問該網(wǎng)站上所有被口令保護的頁面;若robots.txt文件存在,則網(wǎng)絡爬蟲會按照該文件的內(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文件選項說明1.3.1Robots協(xié)議User-agent:用于指定網(wǎng)絡爬蟲的名稱。若該選項的值為“*”,則說明robots.txt文件對任何網(wǎng)絡爬蟲均有效。帶有“*”號的User-agent選項只能出現(xiàn)一次。例如,示例的第一條語句User-agent:*。Disallow:用于指定網(wǎng)絡爬蟲禁止訪問的目錄。若Disallow選項的內(nèi)容為空,說明網(wǎng)站的任何內(nèi)容都是被允許訪問的。在robots.txt文件中,至少要有一個包含Disallow選項的語句。例如,Disallow:/subject_search禁止網(wǎng)絡爬蟲訪問目錄/subject_search。
robots.txt文件選項說明1.3.1Robots協(xié)議Allow:用于指定網(wǎng)絡爬蟲允許訪問的目錄。例如,Allow:/ads.txt表示允許網(wǎng)絡爬蟲訪問目錄/ads.txt。Sitemap:用于告知網(wǎng)絡爬蟲網(wǎng)站地圖的路徑。例如,Sitemap:/sitemap_index.xml和/sitemap_updated_index.xml這兩個路徑都是網(wǎng)站地圖,主要說明網(wǎng)站更新時間、更新頻率、網(wǎng)址重要程度等信息。1.3.1Robots協(xié)議Robots協(xié)議只是一個網(wǎng)站與網(wǎng)絡爬蟲之間達成的“君子”協(xié)議,它并不是計算機中的防火墻,沒有實際的約束力。如果把網(wǎng)站比作私人花園,那么robots.txt文件便是私人花園門口的告示牌,這個告示牌上寫有是否可以進入花園,以及進入花園后應該遵守的規(guī)則,但告示牌并不是高高的圍欄,它只對遵守協(xié)議的“君子”有用,對于違背協(xié)議的人而言并沒有太大的作用。盡管Robots協(xié)議沒有一定的強制約束力,但網(wǎng)絡爬蟲仍然要遵守協(xié)議,違背協(xié)議可能會存在一定的法律風險。熟悉防網(wǎng)絡爬蟲的應對策略,能夠列舉至少3個應對防網(wǎng)絡爬蟲的策略學習目標1.3.2防爬蟲應對策略1.3.2防爬蟲應對策略網(wǎng)絡爬蟲會采取一些應對策略繼續(xù)訪問網(wǎng)站,常見的應對策略包括添加User-Agent字段、降低訪問頻率、設置代理服務、識別驗證碼。添加User-Agent字段降低訪問頻率設置代理服務器識別驗證碼瀏覽器在訪問網(wǎng)站時會攜帶固定的User-Agent(用戶代理,用于描述瀏覽器的類型及版本、操作系統(tǒng)及版本、瀏覽器插件、瀏覽器語言等信息),向網(wǎng)站表明自己的真實身份。網(wǎng)絡爬蟲每次訪問網(wǎng)站時可以模仿瀏覽器的上述行為,也就是在請求網(wǎng)頁時攜帶User-Agent,將自己偽裝成一個瀏覽器,如此便可以繞過網(wǎng)站的檢測,避免出現(xiàn)被網(wǎng)站服務器直接拒絕訪問的情況。1.3.2防爬蟲應對策略添加User-Agent字段降低訪問頻率設置代理服務器識別驗證碼如果同一賬戶在較短的時間內(nèi)多次訪問了網(wǎng)頁,那么網(wǎng)站運維人員會推斷此種訪問行為可能是網(wǎng)絡爬蟲的行為,并將該賬戶加入到黑名單禁止訪問網(wǎng)站。為防止網(wǎng)站運維人員從訪問量上推斷出網(wǎng)絡爬蟲的身份,可以降低網(wǎng)絡爬蟲訪問網(wǎng)站的頻率。不過,這種方式會降低網(wǎng)絡爬蟲的爬行效率,為了彌補這個不足,我們可以適當?shù)卣{(diào)整一些操作,如讓網(wǎng)絡爬蟲每抓取一次頁面數(shù)據(jù)就休息幾秒鐘,或者限制每天抓取的頁面數(shù)據(jù)的數(shù)量。1.3.2防爬蟲應對策略添加User-Agent字段降低訪問頻率設置代理服務器識別驗證碼網(wǎng)絡爬蟲在訪問網(wǎng)站時,若反復使用同一IP地址進行訪問,則極易被網(wǎng)站認出網(wǎng)絡爬蟲的身份后進行屏蔽、阻止、封禁等。此時可以在網(wǎng)絡爬蟲和Web服務器之間設置代理服務器。有了代理服務器之后,網(wǎng)絡爬蟲會先將請求發(fā)送給代理服務器,代理服務器再轉發(fā)給服務器,這時服務器記錄的是代理服務器的IP地址,而不是網(wǎng)絡爬蟲的IP地址。1.3.2防爬蟲應對策略添加User-Agent字段降低訪問頻率設置代理服務器識別驗證碼有些網(wǎng)站在檢測到某個客戶端的IP地址訪問次數(shù)過于頻繁時,會要求該客戶端進行登錄驗證,并隨機提供一個驗證碼。為了應對這種突發(fā)情況,網(wǎng)絡爬蟲除了要輸入正確的賬戶密碼之外,還要像人類一樣通過滑動或點擊行為識別驗證碼,如此才能繼續(xù)訪問網(wǎng)站。由于驗證碼的種類較多,不同的驗證碼需要采用不同的技術進行識別,具有一定的技術難度。1.3.2防爬蟲應對策略網(wǎng)絡爬蟲的工作原理和流程1.4掌握網(wǎng)絡爬蟲的工作原理,能夠定義通用爬蟲和聚焦爬蟲的工作原理學習目標1.4.1網(wǎng)絡爬蟲的工作原理通用網(wǎng)絡爬蟲和聚焦網(wǎng)絡爬蟲是如何工作的?1.4.1網(wǎng)絡爬蟲的工作原理通用網(wǎng)絡爬蟲的采集目標是整個互聯(lián)網(wǎng)上的所有網(wǎng)頁,它會從一個或多個初始URL開始,獲取初始URL對應的網(wǎng)頁數(shù)據(jù),并不斷從該網(wǎng)頁數(shù)據(jù)中抽取新的URL放到隊列中,直至滿足一定的條件后停止。
通用網(wǎng)絡爬蟲的工作原理1.4.1網(wǎng)絡爬蟲的工作原理1.4.1網(wǎng)絡爬蟲的工作原理(1)獲取初始URL。既可以由用戶指定,也可以由待采集的初始網(wǎng)頁指定。(2)抓取頁面,并獲得新URL。根據(jù)初始URL抓取對應的網(wǎng)頁,之后將該網(wǎng)頁存儲到原始網(wǎng)頁數(shù)據(jù)庫中,并且在抓取網(wǎng)頁的同時對網(wǎng)頁內(nèi)容進行解析,并從中提取出新URL。(3)將新URL放入URL隊列。有了新URL之后,我們需要將新URL放入URL隊列中。(4)讀取新URL。從URL隊列中讀取新URL,并根據(jù)該URL獲取對應網(wǎng)頁數(shù)據(jù),同時從新網(wǎng)頁中抽取新的URL。(5)是否滿足停止條件。若網(wǎng)絡爬蟲滿足設置的停止條件,則停止采集;若網(wǎng)絡爬蟲沒有滿足設置的停止條件,則繼續(xù)根據(jù)新URL抓取對應的網(wǎng)頁,并重復步驟(2)~(5)。聚焦網(wǎng)絡爬蟲面向有特殊需求的人群,它會根據(jù)預先設定的主題順著某個垂直領域進行抓取,而不是漫無目的地隨意抓取。與通用網(wǎng)絡爬蟲相比,聚焦網(wǎng)絡爬蟲會根據(jù)一定的網(wǎng)頁分析算法對網(wǎng)頁進行篩選,保留與主題有關的網(wǎng)頁鏈接,舍棄與主題無關的網(wǎng)頁鏈接,其目的性更強。
聚焦網(wǎng)絡爬蟲的工作原理1.4.1網(wǎng)絡爬蟲的工作原理1.4.1網(wǎng)絡爬蟲的工作原理(1)根據(jù)需求確定好聚焦網(wǎng)絡爬蟲的采集目標,以及進行相關的描述。(2)獲取初始URL。(3)根據(jù)初始URL抓取頁面,并獲得新URL。(4)從新URL中過濾掉與采集目標無關的URL。(5)將過濾后的URL放到URL隊列中。(6)根據(jù)一定的抓取策略,從URL隊列中確定URL優(yōu)先級,并確定下一步要抓取的URL。(7)從下一步要抓取的URL中讀取新URL,以準備根據(jù)新URL抓取下一個網(wǎng)頁。(8)若聚焦網(wǎng)絡爬蟲滿足設置的停止條件,或沒有可獲取的URL時,停止采集;若網(wǎng)絡爬蟲沒有滿足設置的停止條件,則繼續(xù)根據(jù)新URL抓取對應的網(wǎng)頁,并重復步驟(3)~(8)。熟悉網(wǎng)絡爬蟲的工作流程,能夠歸納網(wǎng)絡爬蟲抓取網(wǎng)頁的完整流程學習目標1.4.2網(wǎng)絡爬蟲抓取網(wǎng)頁的流程(1)選擇一些網(wǎng)頁,將這些網(wǎng)頁的鏈接作為種子URL放入待抓取URL隊列中。(2)從待抓取URL隊列中依次讀取URL。(3)通過DNS解析URL,把URL地址轉換為網(wǎng)站服務器所對應的IP地址。(4)將IP地址和網(wǎng)頁相對路徑名稱交給網(wǎng)頁下載器,網(wǎng)頁下載器負責網(wǎng)頁內(nèi)容的下載。(5)網(wǎng)頁下載器將相應網(wǎng)頁的內(nèi)容下載到本地。(6)將下載到本地的網(wǎng)頁存儲到頁面庫中,同時將使用過的URL放入到已抓取的URL隊列中,避免重復抓取。(7)對于剛下載的網(wǎng)頁中抽取出所包含的URL信息。(8)在已抓取URL隊列中檢查抽取的URL是否被下載過。如果它還未被下載過,則將這個URL放入待抓取URL隊列中。如此重復(2)~(8),直到待抓取URL隊列為空。1.4.2網(wǎng)絡爬蟲抓取網(wǎng)頁的流程網(wǎng)絡爬蟲實現(xiàn)技術探究1.5了解網(wǎng)絡爬蟲的實現(xiàn)技術,能夠說出使用Python實現(xiàn)網(wǎng)絡爬蟲有哪些優(yōu)勢學習目標1.5網(wǎng)絡爬蟲實現(xiàn)技術探究為滿足用戶快速從網(wǎng)頁上采集數(shù)據(jù)的需求,市面上出現(xiàn)了一些可視化界面的網(wǎng)絡爬蟲工具,比如八爪魚采集器、火車頭采集器等。除了直接使用這些現(xiàn)成的工具之外,我們也可以開發(fā)一個自己的網(wǎng)絡爬蟲。目前,開發(fā)網(wǎng)絡爬蟲的語言主要有PHP、Go、C++、Java、Python共5種。
網(wǎng)絡爬蟲的實現(xiàn)技術1.5.1網(wǎng)絡爬蟲的實現(xiàn)技術
網(wǎng)絡爬蟲的實現(xiàn)技術1.5.1網(wǎng)絡爬蟲的實現(xiàn)技術PHPPHP語言的優(yōu)點是語法簡潔,容易上手,擁有豐富的網(wǎng)絡爬蟲功能模塊;缺點是對多線程的支持不太友好,需要借助擴展實現(xiàn)多線程技術,并發(fā)處理的能力相對較弱。GoC+Go語言的優(yōu)點是高并發(fā)能力強、開發(fā)效率高、豐富的標準庫,通過Go語言開發(fā)的網(wǎng)絡爬蟲程序性能更好;缺點是普及性不高。C++語言的優(yōu)點是運行速度快、性能強;缺點是學習成本高、代碼成型速度慢。網(wǎng)絡爬蟲的實現(xiàn)技術
網(wǎng)絡爬蟲的實現(xiàn)技術1.5.1網(wǎng)絡爬蟲的實現(xiàn)技術JavaJava在網(wǎng)絡爬蟲方向已經(jīng)形成了完善的生態(tài)圈,非常適合開發(fā)大型網(wǎng)絡爬蟲項目,但重構成本比較高。Python使用Python在網(wǎng)絡爬蟲方向已經(jīng)形成完善的生態(tài)圈,它擁有嬌俏的多線程處理能力,但是網(wǎng)頁解析能力不夠強大。網(wǎng)絡爬蟲的實現(xiàn)技術
使用Python開發(fā)網(wǎng)絡爬蟲的優(yōu)點1.5.1網(wǎng)絡爬蟲的實現(xiàn)技術(1)語法簡潔。對于同一個功能,使用Python只需要編寫幾十行代碼,而使用Java可能需要編寫幾百行代碼。(2)容易上手?;ヂ?lián)網(wǎng)中有很多關于Python的教學資源,便于大家學習,出現(xiàn)問題也很容易找到相關資料進行解決。(3)開發(fā)效率高。網(wǎng)絡爬蟲的實現(xiàn)代碼需要根據(jù)不同的網(wǎng)站內(nèi)容進行局部修改,這種任務非常適合像Python這樣靈活的腳本語言。(4)模塊豐富。Python提供了豐富的內(nèi)置模塊、第三方模塊,以及成熟的網(wǎng)絡爬蟲框架,能夠幫助開發(fā)人員快速實現(xiàn)網(wǎng)絡爬蟲的基本功能。熟悉網(wǎng)絡爬蟲的實現(xiàn)流程,能夠歸納使用Python實現(xiàn)網(wǎng)絡爬蟲的流程學習目標1.5.2Python網(wǎng)絡爬蟲的流程1.5.2Python網(wǎng)絡爬蟲的流程抓取網(wǎng)頁數(shù)據(jù)解析網(wǎng)頁數(shù)據(jù)存儲數(shù)據(jù)123抓取網(wǎng)頁數(shù)據(jù)是按照預先設定的目標,根據(jù)所有目標網(wǎng)頁的URL向網(wǎng)站發(fā)送請求,并獲得整個網(wǎng)頁的數(shù)據(jù)。解析網(wǎng)頁數(shù)據(jù)是采用不同的解析網(wǎng)頁的方式從整個網(wǎng)頁的數(shù)據(jù)中提取出目標數(shù)據(jù)。存儲數(shù)據(jù)的過程也是比較簡單,就是將解析網(wǎng)頁數(shù)據(jù)提取的目標數(shù)據(jù)以文件的形式存放到本地,也可以存儲到數(shù)據(jù)庫,方便后期對數(shù)據(jù)進行深入地研究。本章小結本章是全書的開篇。在本章中,我們首先講解了網(wǎng)絡爬蟲的概念和應用場景,然后講解了Robots協(xié)議和防爬蟲應對策略,接著講解了網(wǎng)絡爬蟲的工作原理、工作流程,最后講解了網(wǎng)絡爬蟲的實現(xiàn)技術和Python實現(xiàn)網(wǎng)絡爬蟲的流程。希望讀者通過本章內(nèi)容的學習,對網(wǎng)絡爬蟲有個大致的認識,為后續(xù)深入學習網(wǎng)絡爬蟲奠定基礎。本章小結第2章網(wǎng)頁請求原理《Python網(wǎng)絡爬蟲基礎教程》學習目標/Target了解瀏覽器加載網(wǎng)頁的過程,能夠復述出瀏覽器加載網(wǎng)頁的過程熟悉HTTP的基本原理,能夠歸納URL格式、HTTP請求格式和HTTP響應格式熟悉網(wǎng)頁基礎知識,能夠區(qū)分HTML、JavaScript和CSS三者的區(qū)別掌握HTTP抓包工具Fiddler的使用,能夠獨立安裝并使用Fiddler工具章節(jié)概述/Summary網(wǎng)絡爬蟲請求網(wǎng)頁的過程可以理解為用戶使用瀏覽器加載網(wǎng)頁的過程,這個過程其實是向Web服務器發(fā)送請求的過程,即瀏覽器向Web服務器發(fā)送請求,Web服務器會將響應內(nèi)容以網(wǎng)頁形式返回給瀏覽器。因此,了解瀏覽器與Web服務器之間的通信方式和交互過程,理解網(wǎng)頁的組成、結構、分類、數(shù)據(jù)格式,能加深對網(wǎng)絡爬蟲的理解。本章將針對網(wǎng)頁請求原理的相關知識進行講解。目錄/Contents2.12.22.3瀏覽器加載網(wǎng)頁的過程HTTP基礎網(wǎng)頁基礎2.4HTTP抓包工具——Fiddler瀏覽器加載網(wǎng)頁的過程2.1了解瀏覽器加載網(wǎng)頁的過程,能夠復述出瀏覽器加載網(wǎng)頁的過程學習目標2.1瀏覽器加載網(wǎng)頁的過程2.1瀏覽器加載網(wǎng)頁過程(1)瀏覽器通過域名系統(tǒng)(DomainNameSystem,DNS)服務器查找百度服務器對應的IP地址。(2)瀏覽器向IP地址對應的Web服務器發(fā)送HTTP請求。(3)Web服務器接收HTTP請求后進行處理,向瀏覽器返回HTML頁面。(4)瀏覽器對HTML頁面進行渲染呈現(xiàn)給用戶。HTTP基礎2.2熟悉HTTP的基本原理,能夠歸納URL格式、HTTP請求格式和HTTP響應格式學習目標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簡介選項說明scheme表示方案,用于標識采用哪種傳輸協(xié)議訪問服務器資源user表示用戶,用于標識訪問服務器資源時需要的用戶名password表示密碼,用戶名后面可能要包含的密碼,兩者之間以”:”分隔host表示主機地址,也就是存放資源的服務器主機名或IP地址port表示端口號,也就是存放資源的服務器監(jiān)聽的端口號path用于指定本次請求資源在服務器中的位置params表示訪問資源時使用的協(xié)議參數(shù),參數(shù)之間以“;”分隔query表示查詢字符串,用于指定查詢的資源,一般使用“?”與URL的其余部分進行分隔。查詢字符串沒有通用格式,它通常會以”&”連接多個參數(shù),每個參數(shù)的名稱與值使用“=”連接,如/?ie=utf-8&wd=pythonfrag表示片段,用于指定訪問資源時某一部分資源的名稱URL地址語法格式中各選項的說明
scheme2.2.1URL簡介傳輸協(xié)議說明示例File訪問本地計算機的資源file:///Users/itcast/Desktop/basic.htmlFTP文件傳輸協(xié)議,訪問共享主機的文件資源/moviesHTTP超文本傳輸協(xié)議,訪問遠程網(wǎng)絡資源/template/gfquan/src/logo.pngHTTPS安全的SSL加密傳輸協(xié)議,訪問遠程網(wǎng)絡資源/channel/wallpaperMailto訪問電子郵件地址mailto:null@scheme選項用于規(guī)定如何訪問指定資源的主要標識符,它會告訴負責解析URL的應用程序應該使用什么傳輸協(xié)議。
host2.2.1URL簡介host指存放資源的主機名或者IP地址,它用于標識互聯(lián)網(wǎng)上的唯一一臺計算機,保證用戶在聯(lián)網(wǎng)的計算機上可以高效地從成千上萬臺計算機中找到這臺計算機。IP地址分為IPv4(互聯(lián)網(wǎng)通信協(xié)議第4版)和IPv6(互聯(lián)網(wǎng)協(xié)議第6版),目前較通用的IP地址是IPv4,它通?!包c分十進制”表示成“a.b.c.d”的形式,并通過DNS服務將域名和IP地址相互映射,比如.就是對應的域名。
port2.2.1URL簡介port用于標識在一臺計算機上運行的不同程序,它與主機地址以“:”進行分隔。每個網(wǎng)絡程序都對應一個或多個特定的端口號,例如,采用HTTP協(xié)議的程序默認使用的端口號為80,采用HTTPS協(xié)議的程序默認使用的端口號為443。
path2.2.1URL簡介path是由0個或多個“/”符號隔開的字符串,一般用于指定本次請求的資源在服務器中的位置。熟悉HTTP和HTTPS協(xié)議,能夠說明HTTP和HTTPS協(xié)議的作用學習目標2.2.2HTTP和HTTPS對于網(wǎng)絡爬蟲來說,它采集的頁面通常使用的是HTTP協(xié)議和HTTPS協(xié)議。HTTP協(xié)議全稱為超文本傳輸協(xié)議(HyperTextTransferProtocol),它用于將Web服務器的超文本資源傳送到瀏覽器中。HTTP協(xié)議能夠高效、準確地傳送超文本資源,但瀏覽器與Web服務器的連接是一種一次性連接,它限制每次連接只能處理一個請求。這意味著每個請求都是獨立的,服務器返回本次請求的應答后便立即關閉連接,下次請求再重新建立連接。2.2.2HTTP和HTTPS對于網(wǎng)絡爬蟲來說,它采集的頁面通常使用的是HTTP協(xié)議和HTTPS協(xié)議。HTTPS協(xié)議全稱為超文本傳輸安全協(xié)議(HyperTextTransferProtocolSecure),該協(xié)議在HTTP協(xié)議基礎上添加了安全套接字協(xié)議(SecureSocketsLayer,SSL),數(shù)據(jù)在傳輸過程中主要通過數(shù)字證書、加密算法、非對稱密鑰等技術完成互聯(lián)網(wǎng)數(shù)據(jù)傳輸加密,實現(xiàn)互聯(lián)網(wǎng)傳輸安全保護。2.2.2HTTP和HTTPS熟悉HTTP請求格式,能夠說明HTTP請求格式中各字段的作用學習目標2.2.3HTTP請求格式2.2.3HTTP請求格式瀏覽器向Web服務器發(fā)送的信息是一個HTTP請求,每個HTTP請求由請求行、請求頭部、空行以及請求數(shù)據(jù)(有的也稱為請求體)這4個部分組成。2.2.3HTTP請求格式
請求行GET/item/Python/407313HTTP/1.1請求行的內(nèi)容具體如下。在請求行中,GET表示向服務器請求網(wǎng)絡資源時所使用的請求方法,/item/Python/407313表示請求的URL地址,HTTP/1.1表示使用的HTTP版本。2.2.3HTTP請求格式
請求行常用的請求方法包括GET和POST,其中GET用于請求服務器發(fā)送某個資源,POST用于向服務器提交表單或上傳文件,表單數(shù)據(jù)或文件的數(shù)據(jù)會包含在請求體中。請求方法GET和POST的區(qū)別主要體現(xiàn)兩個方面。GET請求方法通過請求參數(shù)傳輸數(shù)據(jù),最多只能傳輸2KB的數(shù)據(jù);POST請求方法通過實體內(nèi)容傳輸數(shù)據(jù),可以傳輸?shù)臄?shù)據(jù)大小沒有限制。傳輸數(shù)據(jù)大小GET請求方法的參數(shù)信息會在URL中明文顯示,安全性比較低;POST請求方法傳遞的參數(shù)會隱藏在實體內(nèi)容中,用戶看不到,安全性更高。安全性2.2.3HTTP請求格式
請求頭請求行緊挨的部分就是若干個請求頭信息,請求頭主要用于說明服務器要使用的附加信息。Host用于指定被請求資源的服務器主機名和端口號。User-Agent用于標識客戶端身份,通常頁面會根據(jù)不同的User-Agent信息自動做出適配,甚至返回不同的響應內(nèi)容。Accept用于指定瀏覽器或其他客戶端可以接受的MIME文件類型,服務器可以根據(jù)該字段判斷并返回適當?shù)奈募袷?。Referer用于標識當前請求頁面的來源頁面地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。2.2.3HTTP請求格式
請求頭請求行緊挨的部分就是若干個請求頭信息,請求頭主要用于說明服務器要使用的附加信息。Accept-Charse用于指定瀏覽器可以接受的字符集類型。Cookie用于在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務器相關的用戶信息,也可以用來實現(xiàn)模擬登錄。Content-Type用于指出實體內(nèi)容的MIME類型。熟悉HTTP響應格式,能夠說明HTTP響應格式中各字段的作用學習目標2.2.4HTTP響應格式Web服務器發(fā)送給瀏覽器的響應信息由4個部分組成,分別是狀態(tài)行、響應頭、空行、以及響應正文。2.2.4HTTP響應格式
狀態(tài)行HTTP/1.1200OK狀態(tài)行的內(nèi)容具體如下。在狀態(tài)行中,HTTP/1.1表示HTTP協(xié)議的版本號,200表示響應狀態(tài)碼,OK表示響應狀態(tài)碼的簡短描述。2.2.4HTTP響應格式
狀態(tài)行響應狀態(tài)碼代表服務器的響應狀態(tài),它的作用是告知瀏覽器請求Web資源的結果,如請求成功、請求異常、服務器處理錯誤等。響應狀態(tài)碼說明100~199表示服務器成功接收部分請求,要求瀏覽器繼續(xù)提交剩余請求才能完成整個處理過程200~299表示服務器成功接收請求并已完成整個處理過程。常見狀態(tài)碼為200,表示W(wǎng)eb服務器成功處理了請求300~399表示未完成請求,要求瀏覽器進一步細化請求。常見的狀態(tài)碼有302(表示請求的頁面臨時轉移至新地址)、307(表示請求的資源臨時從其他位置響應)和304(表示使用緩存資源)400~499表示瀏覽器發(fā)送了錯誤的請求,常見的狀態(tài)碼有404(表示服務器無法找到被請求的頁面)和403(表示服務器拒絕訪問,權限不夠)500~599表示W(wǎng)eb服務器出現(xiàn)錯誤,常見的狀態(tài)碼為500,表示本次請求未完成,原因在于服務器遇到不可預知的情況2.2.4HTTP響應格式
響應頭狀態(tài)行下面的部分便是若干個響應頭信息,關于響應頭中的常用字段以及常用值的介紹如下。Cache-Control表示服務器告知瀏覽器當前的HTTP響應是否可以緩存。Connection表示瀏覽器是否使用持久HTTP連接。Content-Encoding表示服務器對特定媒體類型的數(shù)據(jù)進行壓縮。Content-Type表示服務器告知瀏覽器實際返回的內(nèi)容的內(nèi)容類型。2.2.4HTTP響應格式
響應正文響應正文是服務器返回的具體數(shù)據(jù),常見的數(shù)據(jù)是HTML源代碼。瀏覽器在接收到HTTP響應后,會根據(jù)響應正文的不同類型進行不同的處理。如果響應正文是DOC文檔,這時瀏覽器會借助安裝在本機的Word程序打開這份文檔;如果響應正文是RAR壓縮文檔,這時瀏覽器會彈出一個下載窗口讓用戶下載解壓軟件;如果響應正文是HTML文檔,這時瀏覽器會在自身的窗口中展示該文檔。2.2.4HTTP響應格式網(wǎng)頁基礎2.3熟悉網(wǎng)頁基礎知識,能夠區(qū)分HTML、CSS和JavaScript三者的區(qū)別學習目標2.3.1網(wǎng)頁開發(fā)技術
HTMLHTML的英文全稱HyperTextMarkupLanguage,即超文本標記語言,是一種用于創(chuàng)建網(wǎng)頁的標準標記語言。一個HTML文檔由一系列的HTML元素組成。2.3.1網(wǎng)頁開發(fā)技術
HTML開始標簽、內(nèi)容、結束標簽組合在一起便構成了一個完整的HTML元素。開始標簽:標識元素的起始位置,由尖括號包裹著元素名稱。結束標簽:標識元素的結束位置,與開始標簽相似,只不過在元素名稱之前多了一個/。內(nèi)容:表示元素的內(nèi)容,位于開始標簽和結束標簽之間。2.3.1網(wǎng)頁開發(fā)技術
HTML標簽說明<html>表示根標簽,用于定義HTML文檔<h1>~<h6>表示標題標簽,用于定義HTML標題,其中<h1>的等級最高,<h6>的等級最低<img>表示圖像標簽,用于定義圖像<p>表示段落標簽,用于定義段落<a>表示鏈接標簽,用于定義鏈接<title>用于定義HTML文檔的標題<script>用于定義瀏覽器腳本<style>用于定義HTML文檔的樣式信息HTML常用元素2.3.1網(wǎng)頁開發(fā)技術
CSSCSS(CascadingStyleSheets)通常稱為CSS樣式或層疊樣式表,主要用于設置HTML頁面中的文本內(nèi)容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式等)以及版面的布局等外觀顯示樣式。CSS以HTML為基礎,它不僅提供了豐富的控制字體、顏色、背景及整體排版的功能,還可以針對不同的瀏覽器設置不同的樣式。2.3.1網(wǎng)頁開發(fā)技術
JavaScriptJavaScript是一門獨立的網(wǎng)頁腳本編程語言,它可以做很多事情,但主流的應用是在Web上創(chuàng)建網(wǎng)頁特效或驗證信息。例如,使用JavaScript腳本語言對用戶輸入的內(nèi)容進行驗證,如果用戶在用戶名和密碼文本框中未輸入任何信息,單擊“登錄”按鈕后將彈出相應的提示信息。2.3.1網(wǎng)頁開發(fā)技術了解網(wǎng)頁結構的組成,能夠說出一個網(wǎng)頁由哪些部分組成學習目標2.3.2網(wǎng)頁的結構2.3.2網(wǎng)頁的結構HTML頁面中使用文檔對象模型(DocumentObjectModel,簡稱DOM)來描述HTML頁面的層次結構。DOM出現(xiàn)的目的是將JavaScript和HTML文檔的內(nèi)容聯(lián)系起來,通過使用DOM可以在HTML文檔中添加、移除和操作各種元素。根據(jù)萬維網(wǎng)聯(lián)盟(WorldWideWebConsortium,簡稱W3C)的HTMLDOM標準,HTMLDOM由節(jié)點組成,HTML文檔的所有內(nèi)容都是節(jié)點,整個HTML文檔是一個文檔節(jié)點,每個HTML元素是元素節(jié)點,每個HTML屬性是屬性節(jié)點,每個注釋是注釋節(jié)點。2.3.2網(wǎng)頁的結構把一個HTML文檔中的所有節(jié)點組織在一起,就構成了一棵HTMLDOM樹,這些節(jié)點之間存在層級關系。熟悉網(wǎng)頁分類,能夠說明什么是靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁
學習目標2.3.3網(wǎng)頁的分類
靜態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類靜態(tài)網(wǎng)頁中包含的諸如文本、圖像、FLASH動畫、超鏈接等內(nèi)容,在編寫網(wǎng)頁源代碼時已經(jīng)確定,基本上不會發(fā)生變化,除非網(wǎng)頁源代碼被重新修改。
靜態(tài)網(wǎng)頁2.3.3網(wǎng)頁的分類靜態(tài)網(wǎng)頁具有以下幾個特點。靜態(tài)網(wǎng)頁的內(nèi)容相對穩(wěn)定,一經(jīng)上傳至網(wǎng)站服務器,無論是否有用戶訪問內(nèi)容都會一直保存在網(wǎng)站服務器上。靜態(tài)網(wǎng)頁的訪問速度快,訪問過程中無須連接數(shù)據(jù)庫。靜態(tài)網(wǎng)頁沒有數(shù)據(jù)庫的支持,內(nèi)容更新與維護比較復雜。靜態(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)頁具有以下幾個特點。動態(tài)網(wǎng)頁一般以數(shù)據(jù)庫技術為基礎。動態(tài)網(wǎng)頁并不是獨立存在于服務器上的網(wǎng)頁文件,只有當用戶請求時服務器才會返回一個完整的網(wǎng)頁。采用動態(tài)網(wǎng)頁技術的網(wǎng)站可以實現(xiàn)更多的功能,如用戶注冊、用戶登錄、在線調(diào)查、用戶管理、訂單管理等。多學一招jQuery是一個快速、簡潔的JavaScript框架,該框架中封裝了JavaScript常用的功能代碼,并對一些功能進行了優(yōu)化,包括HTML文檔操作、事件處理、動畫設計等。Ajax(異步JavaScript和XML)是一種用于創(chuàng)建又快又好、以及交互性強的Web應用程序的技術。使用了Ajax技術的Web應用程序能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載整個頁面,這使得該程序能夠快速地回應用戶的操作。DHTML是DynamicHTML的簡稱,它其實并不是一門新的語言,而是HTML、CSS和客戶端腳本的集成。DHTML可以通過客戶端腳本改變網(wǎng)頁元素(HTML、CSS,或者二者皆被改變)。動態(tài)網(wǎng)頁上使用的技術熟悉網(wǎng)頁數(shù)據(jù)的格式,能夠說明什么是XML和JSON學習目標2.3.4網(wǎng)頁數(shù)據(jù)的格式互聯(lián)網(wǎng)中包含了許多數(shù)據(jù),這些數(shù)據(jù)的格式一般分為非結構化數(shù)據(jù)和結構化數(shù)據(jù),其中非結構化數(shù)據(jù)是指數(shù)據(jù)結構不規(guī)則或不完整,沒有預定義的數(shù)據(jù)模型,不方便使用數(shù)據(jù)庫二維表結構表現(xiàn)的數(shù)據(jù),包括文本、圖片、HTML等;結構化數(shù)據(jù)是方便使用二維表結構表現(xiàn)的數(shù)據(jù),這種數(shù)據(jù)嚴格遵循數(shù)據(jù)格式與長度規(guī)范,包括XML和JSON等。2.3.4網(wǎng)頁數(shù)據(jù)的格式
XML2.3.4網(wǎng)頁數(shù)據(jù)的格式XML是ExtensibleMarkupLanguage的縮寫,它是一種類似于HTML的標記語言,稱為可擴展標記語言??蓴U展指的是用戶可以按照XML規(guī)則自定義標記。在XML文檔中,每個元素由開始標記和結束標記組成,必須是成對出現(xiàn)的,通過元素的嵌套關系可以很準確地描述具有樹狀層次結構的復雜信息。
JSON2.3.4網(wǎng)頁數(shù)據(jù)的格式JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式,它采用完全獨立于編程語言的文本格式存儲和表示數(shù)據(jù)。JSON數(shù)據(jù)寫為名稱/值對,格式為“名稱:值”。HTTP抓包工具——Fiddler2.4熟悉Fiddler的工作原理,能夠定義Fiddler的工作原理學習目標2.4HTTP抓包工具——Fiddler網(wǎng)絡爬蟲實質(zhì)上是模擬瀏覽器向Web服務器發(fā)送請求,對于一些簡單的網(wǎng)絡請求,我們可以通過觀察URL地址構造請求,但對于一些稍復雜的網(wǎng)絡請求,仍然通過觀察URL地址將無法構造正確的請求,因此我們需要對這些復雜的網(wǎng)絡請求進行捕獲分析,這個操作也稱為抓包。常用的抓包工具有Fiddler、Charles、Wireshark等,其中Fiddler在Windows平臺上應用較多。2.4.1Fiddler的工作原理2.4.1Fiddler的工作原理Fiddler是一個HTTP協(xié)議調(diào)試代理工具,它能夠記錄瀏覽器和Web服務器之間的所有HTTP請求,支持對網(wǎng)絡傳輸過程中發(fā)送與接收的數(shù)據(jù)包進行截獲、重發(fā)、編輯、轉存等操作。與瀏覽器自帶的開發(fā)者工具(比如Chrome瀏覽器的F12工具)相比,F(xiàn)iddler具有以下特點??梢员O(jiān)聽HTTP和HTTPS的流量,捕獲瀏覽器發(fā)送的網(wǎng)絡請求??梢圆榭床东@的請求信息??梢詡卧鞛g覽器請求發(fā)送給服務器,也可以偽造一個服務器的響應發(fā)送給瀏覽器,主要用于前后端調(diào)試。可以測試網(wǎng)站的性能。可以對基于HTTPS協(xié)議的網(wǎng)絡會話進行解密。支持第三方插件,可以極大地提高工作效率。2.4.1Fiddler的工作原理Fiddler是以代理服務器的形式工作,它會在瀏覽器和Web服務器之間建立代理服務器,這個代理服務器默認使用的代理地址為,端口為8888。當Fiddler啟動時會自動設置代理,退出時會自動注銷代理,這樣就不會影響其他程序。掌握Fiddler的下載與安裝,能夠完成Fiddler的下載與安裝學習目標2.4.2Fiddler的下載與安裝2.4.2Fiddler的下載與安裝步驟1步驟2步驟3步驟4訪問Fiddler官網(wǎng)打開瀏覽器,在百度頁面的搜索框中輸入關鍵字“Fiddler”,進入Fiddler官網(wǎng)主頁面。在該頁面中單擊頂部菜單欄中的FIDDLERTOOLS選項彈出一個下拉菜單。2.4.2Fiddler的下載與安裝步驟2步驟1步驟3步驟4訪問FiddlerClassic產(chǎn)品主頁在官網(wǎng)中單擊“FiddlerClassic”,進入FiddlerClassic產(chǎn)品主頁。2.4.2Fiddler的下載與安裝步驟3步驟1步驟2步驟4下載FiddlerClassic進入FiddlerClassic產(chǎn)品下載頁面。第1個下拉列表框中選擇FiddlerClassic的用途。第2個文本框中填寫郵箱地址。第3個下拉列表框中選擇國家或地區(qū),并且勾選IaccepttheFiddlerEndUserLicenseAgreement復選框,接受用戶許可協(xié)議。2.4.2Fiddler的下載與安裝步驟4步驟1步驟2步驟3安裝FiddlerSetup.exe下載完成后,雙擊FiddlerSetup.exe
彈出Fiddler用戶協(xié)議界面。2.4.2Fiddler的下載與安裝步驟5步驟6選擇安裝路徑單擊“IAgree”按鈕,進入選擇Fiddler安裝路徑的界面。2.4.2Fiddler的下載與安裝步驟6步驟5安裝完成安裝路徑設置完成之后,單擊“Install”按鈕開始安裝Fiddler,直至彈出網(wǎng)頁并顯示“Installationwassuccessful!”說明Fiddler安裝成功。熟悉Fiddler的界面,能夠說明Fiddler界面常用功能的作用學習目標2.4.3Fiddler界面詳解2.4.3Fiddler界面詳解Fiddler操作界面共劃分為7個區(qū)域,分別為菜單欄、工具欄、會話窗口、Request窗口、Response窗口、命令行窗口和狀態(tài)欄。
工具欄2.4.3Fiddler界面詳解圖標說明作用備注為當前會話添加備注回放可以再次發(fā)送某個請求清除界面信息清除會話窗口列表的全部或部分請求bug調(diào)試單擊該按鈕可繼續(xù)執(zhí)行斷點后的代碼模式切換切換Fiddler的工作模式(默認是緩沖模式)解壓請求對HTTP請求的內(nèi)容進行解壓會話保存設置保存會話的數(shù)量(默認是保存所有)
工具欄2.4.3Fiddler界面詳解圖標說明作用過濾請求設置只捕獲某一客戶端發(fā)送的請求,拖拽該圖標到該客戶端的任意一個請求后會創(chuàng)建一個過濾器,右擊該圖標會清除之前設置的過濾器查找查找特定內(nèi)容會話保存將所有會話保存到SAZ文件中截取屏幕既可以立即截取屏幕,也可以計時后截取屏幕計時器具備計時功能瀏覽器若選中某個會話,則可以使用IE瀏覽器或Chrome瀏覽器打開該會話清除緩存清空WinINET緩存。按下CTRL鍵并單擊該按鈕還會清除WinINET中保存的永久cookie
工具欄2.4.3Fiddler界面詳解圖標說明作用編碼和解碼將文本進行編碼和解碼窗體分離將一個窗體分離顯示顯示系統(tǒng)狀態(tài)顯示當前系統(tǒng)是在線還是離線狀態(tài)。如果是在線狀態(tài),將鼠標懸停在該按鈕上方時會顯示本地主機名和IP地址刪除工具欄刪除工具欄(如果要恢復顯示工具欄,可以在菜單欄中選擇“View”→“ShowBar”)
會話窗口2.4.3Fiddler界面詳解會話窗口負責展示所有采用了HTTP/HTTPS協(xié)議的會話列表。會話代表瀏覽器與服務器的一次通信過程,這個過程中產(chǎn)生了多個HTTP請求和HTTP響應。名稱說明#Fiddler生成的IDResult響應的狀態(tài)碼Protocol當前會話使用的協(xié)議Host接收請求的服務器和主機名和端口號URL請求的URL路徑、文件和查詢字符串Body響應體中包含的字節(jié)數(shù)Caching響應頭中Expires和Cache-ControlContent-Type響應中Content-Type的值Proecess對應本地Windows的進程Comments通過工具欄Comment按鈕設置的注釋信息CustomFiddlerScript所設置的ui-CustomColumn標志位的值
會話窗口2.4.3Fiddler界面詳解會話窗口中會使用不同的圖標標記Fiddler捕獲的會話信息,包括HTTP狀態(tài)、響應類型、數(shù)據(jù)流類型等。圖標說明通用的成功響應請求使用CONNECT方法,使用該方法構建傳送加密的HTTPS數(shù)據(jù)流通道響應是JSON文件響應狀態(tài)是HTTP/304,表示客戶端緩存的副本已經(jīng)是最新的響應是腳本格式使用POST方法向服務器發(fā)送數(shù)據(jù)
會話窗口2.4.3Fiddler界面詳解會話窗口中會使用不同的圖標標記Fiddler捕獲的會話信息,包括HTTP狀態(tài)、響應類型、數(shù)據(jù)流類型等。圖標說明響應是圖像文件會話被客戶端、Fiddler或服務器中止響應的是CSS文件響應的是XML文件響應是服務器錯誤響應狀態(tài)碼為300、301、302、303或307
Request窗口2.4.3Fiddler界面詳解Request窗口默認選中了“Inspectors”選項,Inspectors選項對應的面板中顯示了當前所選會話的請求信息。名稱說明Headers用分級視圖顯示由客戶端發(fā)送到服務器的HTTP請求的請求頭部信息,包括客戶端信息、Cookie、傳輸狀態(tài)等TextView以文本的形式顯示POST請求的請求數(shù)據(jù)WebForms顯示GET請求的URL參數(shù)或POST請求的請求數(shù)據(jù)HexView用十六進制數(shù)據(jù)顯示請求Auth顯示響應頭中的Proxy-Authorization(代理身份驗證)和Authorization(授權)信息Raw將整個請求顯示為純文本JSON顯示JSON格式的文件XML將選中的請求和響應解釋成一個XML格式的字符串,顯示XML文檔節(jié)點的樹形圖
Response窗口2.4.3Fiddler界面詳解Response窗口顯示了當前所選會話的響應信息。名稱說明Transformer顯示響應的編碼信息Headers用分級視圖顯示響應頭部信息TextViewSyntaxView以文本的形式顯示響應數(shù)據(jù)根據(jù)多個指定規(guī)則高亮顯示多種類型的請求文本和響應文本ImageView如果請求的是圖片資源,則顯示響應的圖片HexView用十六進制數(shù)據(jù)顯示響應
Response窗口2.4.3Fiddler界面詳解Response窗口顯示了當前所選會話的響應信息。名稱說明WebView顯示響應在Web瀏覽器中的預覽效果Auth顯示響應頭部中的Proxy-Authorization和Authorization信息Caching顯示本次請求的緩存信息Cookies顯示任何發(fā)送出出去的請求的Cookie中的內(nèi)容Raw將整個響應顯示為純文本JSON顯示JSON格式的文件XML如果響應體是XML格式,就是用分級的XML樹形圖來顯示它熟悉Fiddler的界面,能夠說明Fiddler界面常用功能的作用學習目標2.4.4Fiddler捕獲HTTPS頁面的設置前面使用Fiddler捕獲的會話都是基于HTTP協(xié)議的,之所以出現(xiàn)這種情況是因為Fiddler默認不支持基于HTTPS協(xié)議的會話。如果希望Fiddler工具能夠解密HTTPS協(xié)議的會話,我們還需要對Fiddler工具進行一些設置。2.4.4Fiddler捕獲HTTPS頁面的設置步驟1步驟2步驟3步驟4打開Options對話框在Fiddler的Tools菜單中選擇Options…選項,彈出Options窗口對話框。2.4.4Fiddler捕獲HTTPS頁面的設置步驟2步驟1步驟3步驟4切換至HTTPS選項的Options對話框2.4.4Fiddler捕獲HTTPS頁面的設置在Options對話框中選擇“HTTPS”選項卡。CaptureHTTPSCONNECTs和DecryptHTTPStraffic,其中CaptureHTTPSCONNECTs復選框用于設置Fiddler工具是否捕獲HTTPS連接,默認為勾選狀態(tài);DecryptHTTPStraffic復選框用于解密HTTPS通信,默認為未勾選狀態(tài)。步驟3步驟1步驟2步驟4勾選DecryptHTTPStraffic復選框后的Options對話框2.4.4Fiddler捕獲HTTPS頁面的設置勾選HTTPS選項中的DecryptHTTPStraffic復選框,在該復選框的下方增加了若干選項。...fromallprocesses表示從所有進程捕獲。Ignoreservercertificateerrors(unsafe)復選框用于設置是否忽略服務器證書錯誤。步驟4步驟1步驟2步驟3設置HTTP選項勾選Ignoreservercertificateerrors(unsafe),忽略服務器證書錯誤。2.4.4Fiddler捕獲HTTPS頁面的設置步驟5步驟6步驟7步驟8單擊Actions按鈕為Fiddler配置Windows信任根證書以解決安全警告,單擊Actions按鈕彈出選項列表。2.4.4Fiddler捕獲HTTPS頁面的設置步驟6步驟5步驟7步驟8確認信任Fiddler根證書在彈出的選項列表中選擇TrustRootCertificate(受信任的根證書),彈出確認是否信任Fiddler根證書的對話框。2.4.4Fiddler捕獲HTTPS頁面的設置步驟7步驟5步驟6步驟8切換至Connections選項的Options窗口單擊“Yes”按鈕,確認信任根證書,跳轉回設置好HTTP選項的Options對話框。在Options對話框中單擊“Connections”選項,切換至Connections選項的Options對話框。2.4.4Fiddler捕獲HTTPS頁面的設置步驟8步驟5步驟6步驟7設置允許遠程連接勾選Allowremotecomputerstoconnect復選框,設置允許遠程連接,彈出EnablingRemoteAccess對話框。2.4.4Fiddler捕獲HTTPS頁面的設置配置完成單擊“確定”按鈕跳轉回Connections選項的Options對話框,此時該對話框中的Allowremotecomputerstoconnect復選框已經(jīng)被勾選。2.4.4Fiddler捕獲HTTPS頁面的設置單擊“OK”按鈕完成配置。為了使配置生效還需重啟Fiddler。步驟9多學一招瀏覽器安裝SwitchyOmega插件使用Fiddler捕獲Chrome瀏覽器發(fā)送的會話后,瀏覽器會自動將Fiddler設為代理服務器,但如果Fiddler非正常退出,則可能會導致Chrome瀏覽器的代理服務器無法恢復正常,這時就需要手動地更改Chrome的代理服務器,相對比較繁瑣。為了解決這個問題,我們可以為Chrome瀏覽器安裝SwitchyOmega插件,通過該插件方便管理Chrome瀏覽器的代理服務器。在Github上搜索SwitchyOmega插件并進行下載。SwitchyOmega插件的下載頁面。多學一招單擊SwitchyOmega_Chromium.crx開始下載,下載完成之后便可以在Chrome瀏覽器中進行安裝。步驟1步驟3步驟4打開Chrome擴展程序頁面打開Chrome瀏覽器,單擊右上角的按鈕彈出菜單列表,在菜單列表中選擇“更多工具”→“擴展程序”選項,進入擴展程序頁面。多學一招步驟1步驟2步驟1步驟4安裝并開啟將下載好的SwitchyOmega.crx文件拖入到擴展程序頁面中,并打開該擴展程序的開啟按鈕,此時擴展程序頁面的右上角顯示了該擴展程序的圖標。多學一招步驟2步驟2步驟3步驟1步驟2進入SwitchyOmega選項頁面單擊圖標,在打開的菜單列表中選擇“選項”進入SwitchyOmega選項頁面。多學一招步驟3步驟4步驟1步驟2多學一招步驟4步驟4步驟3新建情境模式單擊“新建情景模式...”鏈接,彈出新建情景模式對話框窗口,在該對話框窗口中填寫情景模式名稱為Fiddler,選擇情景模式的類型為代理服務器。多學一招步驟5步驟6步驟7單擊“創(chuàng)建”按鈕新建情景模式,跳轉回添加了情景模式Fiddler的頁面,這里將代理協(xié)議設置為HTTP,代理服務器設置為,代理端口設置為8888,單擊頁面左側的“應用選項”進行保存。設置Fiddler情境模式多學一招步驟6步驟5步驟7選擇Fiddler代理單擊頁面右上角的
圖標彈出選項列表,在該列表中選擇Fiddler代理。多學一招步驟7步驟5步驟6使用Fiddler捕獲網(wǎng)絡請求再次使用Chrome瀏覽器訪問百度首頁,便可以在Fiddler中看到捕獲的訪問百度首頁時發(fā)送的網(wǎng)絡請求。熟悉Fiddler的使用,能夠使用Fiddler完成對有道翻譯請求的捕獲學習目標2.4.5Fiddler的基本使用了解了Fiddler的工作原理、界面、捕獲HTTPS頁面的設置之后,我們以有道翻譯為例,為大家演示如何使用Fiddler工具捕獲翻譯單詞時發(fā)送的請求。2.4.5Fiddler的基本使用步驟1步驟2步驟3步驟4訪問有道翻譯并翻譯單詞在瀏覽器中打開有道翻譯頁面,該頁面中有兩個灰色的區(qū)域,左側區(qū)域用于輸入要翻譯的文本,右側區(qū)域用于展示翻譯后的結果。在左側區(qū)域中輸入python,單擊“翻譯”按鈕后,右側區(qū)域展示了python的翻譯結果。2.4.5Fiddler的基本使用步驟2步驟1步驟3步驟4使用Fiddler捕獲請求啟動Fiddler工具,清空會話窗口中的會話列表。在瀏覽器中再次單擊“翻譯”按鈕,切換到Fiddler后可以看到捕獲的所有網(wǎng)絡請求。2.4.5Fiddler的基本使用步驟3步驟1步驟2步驟4查看請求信息和響應信息在Fiddler右側的Request窗口和Response窗口中分別顯示了該網(wǎng)絡請求的請求信息與響應信息。2.4.5Fiddler的基本使用步驟4步驟1步驟2步驟3查看請求數(shù)據(jù)和翻譯python后的結果在Request窗口中單擊“WebForms”選項打開WebForms面板,該面板中展示了請求數(shù)據(jù)的具體內(nèi)容;在Response窗口中單擊“JSON”選項卡打開JSON面板,該面板中展示了翻譯python后的結果。2.4.5Fiddler的基本使用本章小結在本章中,我們首先介紹了瀏覽器加載網(wǎng)頁的過程,然后介紹了HTTP相關的基礎知識,如URL、HTTP、HTTPS,HTTP請求格式及HTTP響應格式,接著介紹了網(wǎng)頁相關的基礎知識,最后介紹了使用Fiddler捕獲瀏覽器的的會話,從而分析出瀏覽器需要準備怎樣的請求,以及如何處理Web服務器的響應。希望讀者通過本章內(nèi)容的學習,能理解網(wǎng)頁請求的原理,熟練地使用Fiddler抓包工具,為后面的學習奠定扎實的基礎。本章小結第3章抓取靜態(tài)網(wǎng)頁數(shù)據(jù)《Python網(wǎng)絡爬蟲基礎教程》學習目標/Target了解抓取靜態(tài)網(wǎng)頁的實現(xiàn)技術,能夠說出每種實現(xiàn)技術的特點掌握Requests中基本請求的發(fā)送方式,能夠向服務器發(fā)送GET請求和POST請求掌握Requests中響應內(nèi)容的處理方式,能夠根據(jù)需要獲取響應內(nèi)容學習目標/Target掌握Requests中請求頭的定制方式,能夠為GET請求和POST請求定制請求頭掌握Requests中代理服務器的設置方式,能夠為請求設置代理服務器掌握Requests中異常的處理方式,能夠處理請求超時異常章節(jié)概述/Summary靜態(tài)網(wǎng)頁是早期網(wǎng)站中經(jīng)常用到的頁面,這類網(wǎng)頁的特點是所有數(shù)據(jù)都直接呈現(xiàn)在網(wǎng)頁源代碼中,對于網(wǎng)絡爬蟲來說,只要獲取了靜態(tài)網(wǎng)頁的源代碼,就相當于抓取了靜態(tài)網(wǎng)頁的數(shù)據(jù)。本章將針對抓取靜態(tài)網(wǎng)頁數(shù)據(jù)的相關內(nèi)容進行詳細地講解。目錄/Contents3.13.23.3抓取靜態(tài)網(wǎng)頁的實現(xiàn)技術發(fā)送基本請求處理復雜請求目錄/Contents3.43.53.6設置代理服務器處理異常實踐項目:抓取黑馬程序員論壇的數(shù)據(jù)抓取靜態(tài)網(wǎng)頁的技術3.1了解抓取靜態(tài)網(wǎng)頁的實現(xiàn)技術,能夠說出每種實現(xiàn)技術的特點學習目標3.1抓取靜態(tài)網(wǎng)頁的技術靜態(tài)網(wǎng)頁是HTML格式的網(wǎng)頁,這種網(wǎng)頁在瀏覽器中呈現(xiàn)的內(nèi)容都會體現(xiàn)在源代碼中,此時我們?nèi)粢ト§o態(tài)網(wǎng)頁的數(shù)據(jù),只需要獲得網(wǎng)頁的源代碼即可。網(wǎng)絡爬蟲抓取靜態(tài)網(wǎng)頁數(shù)據(jù)的過程就是獲得網(wǎng)頁源代碼的過程,這個過程模仿用戶通過瀏覽器訪問網(wǎng)頁的過程,包括向Web服務器發(fā)送HTTP請求、服務器對HTTP請求做出響應并返回網(wǎng)頁源代碼。3.1抓取靜態(tài)網(wǎng)頁的技術為幫助開發(fā)人員抓取靜態(tài)網(wǎng)頁數(shù)據(jù),減少開發(fā)人員的開發(fā)時間,Python提供了一些功能齊全的庫,包括urllib、urllib3和Requests,其中urllib是Python內(nèi)置庫,無須安裝便可以直接在程序中使用;urllib3和Requests都是第三方庫,需要另行安裝后才可以在程序中使用。urlliburllib是Python最早內(nèi)置的HTTP客戶端庫,它涵蓋了基礎的網(wǎng)絡請求功能。urllib3urllib3是一個強大的、用戶友好的Python的HTTP客戶端庫,包括線程安全、連接池、客戶端TLS/SSL驗證、壓縮編碼等功能。RequestsRequests基于urllib3編寫,該庫會在請求完后重復使用Socket套接字,不會與服務器斷開連接,而urllib庫會在請求完之后與服務器斷開連接。3.1抓取靜態(tài)網(wǎng)頁的技術本書后續(xù)選擇用Requests庫進行開發(fā),截至2021年9月,Requests庫的最新版本是2.25.1。值得一提的是,Requests庫是第三方庫,它可以通過pip工具進行安裝,如此便可以在導入程序后直接使用。Requests庫的安裝命令如下。pipinstallrequests3.1抓取靜態(tài)網(wǎng)頁的技術發(fā)送基本請求3.2掌握Requests中基本請求的發(fā)送方式,能夠向服務器發(fā)送GET請求學習目標3.2.1發(fā)送GET請求在Requests庫中,GET請求通過調(diào)用get()函數(shù)發(fā)送,該函數(shù)會根據(jù)傳入的URL構建一個請求(每個請求都是Request類的對象),將該請求發(fā)送給服務器。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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國電視傳媒行業(yè)運營態(tài)勢及發(fā)展前景分析報告
- 2025-2030年中國電炸鍋行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 財務會計外包服務合同
- 2025年信息技術產(chǎn)品代理權合同協(xié)議
- 2025年住宅小區(qū)建筑施工勞務合同
- 2025年住宅小區(qū)物業(yè)管理服務合同文本
- 2025年長期貨車租賃合同示范文本
- 2025年個體經(jīng)營荒蕪山坡合同條款范例
- 2025年不銹鋼門窗安裝合同
- 2025年半成品加工承攬合同范文與分析
- 公司辦公室5S管理規(guī)定(實用含圖片)
- (完整版)餐飲員工入職登記表
- 智能化工程施工工藝圖片講解
- 人教版小學五年級數(shù)學下冊教材解讀
- 2022年最新蘇教版五年級下冊科學全冊教案
- 咳嗽與咳痰課件
- 咖啡樹的修剪方法和技術_種植技巧
- 小學四年級數(shù)學奧數(shù)應用題100題
- 綜合布線驗收報告材料
- 《初三心理健康教育》ppt課件
- 重慶鐵塔公司配套設備安裝施工服務技術規(guī)范書
評論
0/150
提交評論