




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目一
爬蟲基礎通過對本章的學習,了解爬蟲的特點,理解爬蟲的運行機制,理解網頁數據傳輸方式,理解網頁運行方式,熟悉Python程序的書寫。了解爬蟲的特點。理解爬蟲的運行機制。理解網頁數據傳輸方式。理解網頁運行方式。熟悉Python程序的書寫。
網絡爬蟲(WebSpider)又稱為“網絡機器人”“網絡蜘蛛”,是一種通過既定規則,能夠自動提取網頁信息的程序。1.1爬蟲簡介
爬蟲技術的興起源于海量網絡數據的可用性,通過爬蟲技術使我們能夠較為容易地獲取網絡數據,并通過對數據的分析得出有價值的結論。網絡爬蟲是一種數據收集的方式,廣泛用于搜索引擎、市場分析等領域。
robots協議全稱為“網絡爬蟲排除標準”,該協議是互聯網中的道德規范,主要用于保護網站中的某些隱私。網站可以通過robots告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。
很多網站的連接層次比較深,蜘蛛很難抓取到,網站地圖(sitemap)可以方便搜索引擎蜘蛛抓取網站頁面,通過抓取網站頁面,清晰了解網站的架構。網站地圖就是根據網站的結構、框架、內容,生成的導航網頁文件,網站地圖一般存放在根目錄下并命名為sitemap。網站地圖對于提高用戶體驗有極大好處,它們為網站訪問者指明方向,并幫助迷失的訪問者找到他們想看的頁面。當前比較常用的爬蟲工具較多,一般主流的有Scrapy和PySpider等技術框架。
Scrapy是一個常見的開源爬蟲框架,它使用Python語言編寫。Scrapy可用于各種有用的應用程序,如數據挖掘,信息處理以及歷史歸檔等,目前主要用于抓取Web站點并從頁面中提取結構化的數據。在網頁爬蟲采集時可使用的編程語言主要有Python、Java和C#。如果要在傳感器中采集數據,可使用C、C++以及Shell等其他編程語句。目前,網絡上有很多開源爬蟲軟件可供使用者選擇,常見的有Larbin、Nutch、Heritrix等,開源爬蟲是已成型的爬蟲軟件,用戶可以直接使用開源爬蟲抓取網絡上的網頁資源。(1)通用網絡爬蟲通用網絡爬蟲也稱“全網爬蟲”,通用網絡爬蟲是捜索引擎抓取系統的重要組成部分,主要為門戶網站站點搜索引擎和大型Web服務提供商采集網絡數據。(2)聚焦網絡爬蟲聚焦網絡爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇地訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。(3)增量式網絡爬蟲增量式網絡爬蟲是指對已下載網頁采取增量式更新和只爬行新產生的或者已經發生變化的網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。(4)深層網絡爬蟲Web頁面按存在方式可以分為表層網頁和深層網頁。表層網頁是指傳統搜索引擎可以索引的頁面,以超鏈接可以到達的靜態網頁為主構成的Web頁面。深層網頁是那些大部分內容不能通過靜態鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的Web頁面,例如用戶登錄或者注冊才能訪問的頁面。隨著互聯網信息的“爆炸”,網絡爬蟲漸漸為人們所熟知,并被應用到社會生活的眾多領域。作為一種自動采集網頁數據的技術,大多數依賴數據支撐的應用場景都離不開網絡爬蟲,包括搜索引擎、輿情分析與監測、聚合平臺、出行類軟件等。爬蟲技術的應用場景
網絡爬蟲技術正是一把開采礦藏的利器,雖然爬蟲技術本身“中立”,但不當的使用行為,卻可能存在相應的法律風險,值得行業從業者關注。爬蟲帶來的法律問題
在人工智能時代,大數據的合理使用為人們的學習和生活帶來了極大的便利,但也存在諸多的挑戰,可謂“機遇與挑戰并存”。在網絡爬蟲被廣泛使用的同時,數據訪問的獲取、使用和分享的規則亟待確立。HTML標記網絡爬蟲的基礎是HTML,因此在學習網絡爬蟲之前需要首先了解關于HTML的基礎知識。HTML的英文全稱是“HyperTextMarkedLanguage”,也稱“超文本標記語言”,它是一種標識性的語言。HTML包括一系列標簽,通過這些標簽可以將網絡上的文檔格式統一,使分散的Internet資源連接為一個邏輯整體。1.2爬蟲基礎
HTML標記以<>尖括號開始,以</>結束,中間為標記內容。文檔以<HTML></HTML>標記表示網頁文檔的開始,以<head></head>標記表示網頁的頭部內容,以<body></body>標記表示網頁的正文部分。常見的HTML文檔書寫結構如下:<html><head><title>標題</title></head><body>
正文</body></html>
目前HTML5是HTML的最新標準。HTML5是包含了HTML,CSS,Javascript在內的等多種技術的組合,其中HTML和CSS主要負責頁面的搭建,Javascript負責邏輯處理。一個最簡單HTML5頁面代碼如下所示。<!DOCTYPEhtml><htmllang="zh"><head><title>這是我的網頁</title></head><body><h1>我的第一個標題</h1><p>我的第一個段落。</p></body></html>CSS樣式表CSS(全稱為CascadingStyleSheet)稱為“層疊樣式表”,也可以稱為CSS樣式表或樣式表,其文件擴展名為.CSS。CSS用于增強或控制網頁樣式,并允許將樣式信息與網頁內容分隔開的一中標記性語言。CSS規則由兩個主要的部分構成:選擇器與聲明。聲明可以是一條或者多條。多條聲明在書寫時用“;”分隔開。選擇器(selector)通常是用戶需要改變樣式的HTML元素。而聲明(Declaration)是由一個屬性和一個值組成。屬性(property)是希望設置的樣式屬性(styleattribute)。值就是賦予樣式屬性的一個具體值,屬性和值在書寫的時候用冒號分隔開。樣式表實例,代碼如下:.h1{width:60%;/*元素的寬度設定*/margin:0auto;/*元素的外邊距設定,左右居中*/}
內部樣式表可寫在HTML文檔內部,代碼如下:<head><styletype="text/css">.center{text-align:center;}.main{margin-top:30px;}</head>Javascript語言JavaScript是一種輕量級的編程語言,基于原型編程、多范式的動態腳本語言,并且支持面向對象、命令式和聲明式(如函數式編程)風格。JavaScript由3個部分組成:ECMAScript、文檔對象模型(DOM)、瀏覽器對象模型(BOM)。[例1-1]在HTML5網頁中增加JavaScript。代碼如下:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>javascript</title></head><body><p>JavaScript能夠直接寫入HTML輸出流中:</p><script>document.write("<h1>這是一個標題</h1>");document.write("<p>這是一個段落。</p>");</script><p>向文檔寫入HTML表達式或JavaScript代碼</p></body></html>該例使用語句document.write()向HTML文檔中寫入JavaScript代碼。在JavaScript中每個載入瀏覽器的HTML文檔都會成為Document對象。網絡協議(1)HTTP協議HTTP也稱做“超文本傳輸協議”,它是一個基于請求與響應,無狀態的,應用層的協議,常基于TCP/IP協議傳輸數據,是互聯網上應用最為廣泛的一種網絡協議,所有的WWW文件都必須遵守這個標準。可以簡單的把HTTP請求理解為從客戶端到服務器端的請求消息。無論是人在操作瀏覽器還是爬蟲操作瀏覽器,當希望從服務器請求服務或信息時,就需要首先向服務器端發出一個請求,然后服務器返回響應,最后連接關閉,這就是Web服務的流程。圖1-7顯示了使用HTTP協議來建立客戶機和服務器的連接。(2)HTTPS協議設計HTTP的初衷是為了提供一種發布和接收HTML頁面的方法。而HTTPS則是一種通過計算機網絡進行安全通信的傳輸協議,經由HTTP進行通信,利用SSL/TLS建立全信道,加密數據包。HTTPS使用的主要目的是提供對網站服務器的身份認證,同時保護交換數據的隱私與完整性。字符編碼
在計算機中,所有的信息都是0/1組合的二進制序列,計算機是無法直接識別和存儲字符的。因此,字符必須經過編碼才能被計算機處理。字符編碼是計算機技術的基礎,也是大數據清洗需要的基本功之一。
字符編碼也叫作“字集碼”,把字符集中的字符編碼為指定集合中某一對象(例如:比特模式、自然數序列、8位組或者電脈沖),以便文本在計算機中存儲和通過通信網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和ASCII碼。常見的網絡數據傳輸格式(1)XMLXML(可擴展標記語言)于1998年獲得了規范和標準(如1998年2月10日,W3C公布XML1.0標準),并一直沿用至今,是當今因特網上保存和傳輸信息的主要標記語言。XML的主要特點是將數據的內容和形式分離,以便于在互聯網上的傳輸。在XML文檔的整體結構來看,從設計之初,人們便將XML的文檔在網頁中顯示成樹狀結構,它的顯示總是從“根部”開始,然后延伸到“枝葉”。一個完整的XML文檔如下:<?xmlversion="1.0"encoding="utf-8"?><persons><person><full_name>TonySmith</full_name><child_name>Cecilie</child_name></person><person><full_name>DavidSmith</full_name><child_name>Jogn</child_name></person><person><full_name>MichaelSmith</full_name><child_name>kyle</child_name><child_name>klie</child_name></person></persons>(2)JSONJSON(JavaScript
ObjectNotation)來源于JavaScript
,是新一代的網絡數據傳輸格式。其中JavaScript是一種基于Web的腳本語言,主要用于在HTML頁面中添加動作腳本。JSON作為一種輕量級的數據交換技術,在跨平臺的數據傳輸和交換中起到了關鍵的作用。從技術上看,JSON實際上是JavaScript的一個子集,所以JSON的數據格式和JavaScript是對應的。與XML格式相比,JSON書寫更簡潔,在網絡中傳輸速度也更快。JSON格式數據如下所示。{"name":"Michael"}{"name":"Andy","age":30}{"name":"Justin","age":19}HTTP由兩部分組成:請求和響應。(1)Request(請求)每一個用戶打開的網頁都必須在最開始由用戶向服務器發送訪問的請求。一般來講,一個HTTP請求報文由請求行(requestline)、請求頭部(headers)、空行(blankline)和請求數據(requestbody)4個部分組成。
(2)Response(響應)服務器在接收到用戶的請求后,會驗證請求的有效性,然后向用戶發送相應的內容。客戶端接收到服務器的相應內容后,再將此內容展示出來,以供用戶瀏覽。1.3網頁的請求和響應網頁請求的方式一般分為兩種:GET和POST。(1)GETGET是最常見的請求方式,一般用于獲取或者查詢資源信息,也是大多數網站使用的方式。
(2)POSTPOST允許客戶端給服務器提供信息較多。POST與GET相比,多了以表單形式上傳參數的功能,因此除了查詢信息外,還可以修改信息。常見的網頁請求頭參數
(1)User-AgentUser-Agent表示瀏覽器名稱,這個參數在網絡爬蟲中經常會被使用到。具體來講,User-Agent是一個特殊字符串頭,被廣泛用于標示瀏覽器客戶端的信息,使得服務器能識別客戶機使用的操作系統和版本、CPU類型、瀏覽器及版本、瀏覽器的渲染引擎、瀏覽器語言等。有一些網站不喜歡被爬蟲程序訪問,所以會檢測連接對象,如果是爬蟲程序,就會拒絕繼續訪問。所以為了要讓程序可以正常運行,需要隱藏爬蟲程序的身份,此時就可以通過設置UserAgent來達到隱藏爬蟲身份的目的。一些常見瀏覽器的User-Agent如下所示。Safari瀏覽器:User-Agent:Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50Firefox瀏覽器:User-Agent:Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1Chrome瀏覽器:User-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11常見的網頁響應狀態碼
當收到GET或POST等方法發來的請求后,服務器就要對報文進行響應。在響應中狀態行(statusline)通過提供一個狀態碼來說明所請求的資源情況。HTTP狀態碼表示客戶端HTTP請求的返回結果、標記服務器端的處理是否正常或者是出現的錯誤,能夠根據返回的狀態碼判斷請求是否得到正確的處理很重要。最常用的狀態碼。200:找到了該資源,并且一切正常。204:表示客戶端發送給客戶端的請求得到了成功處理,但在返回的響應報文中不含實體的主體部分(沒有資源可以返回)。301:請求的網頁已永久移動到新位置。服務器返回此響應(對GET或HEAD請求的響應)時,會自動將請求者轉到新位置。304:該資源在上次請求之后沒有任何修改,這通常用于瀏覽器的緩存機制。401:客戶端無權訪問該資源,這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到服務器。403:客戶端未能獲得授權,這通常是在401之后輸入了不正確的用戶名或密碼。404:在指定的位置不存在所申請的資源,404是最常見的請求錯誤碼。500:代表程序錯誤,也就是說請求的網頁程序本身報錯了,或者是在服務器端的網頁程序出錯。由于現在的瀏覽器都會對狀態碼500做一定的處理,所以在一般情況下會返回一個定制的錯誤頁面。打開新浪網,網址如下:/,并按F12打開調試器,選中Network即可查看該網頁的請求和響應代碼選中qq.png元素,在General中查看請求的url、請求的方法以及響應狀態碼[例1-2]獲取一個POST請求。1.輸入網址/,這是一個專門用來測試的網站,當用戶以POST方式向這個網站的服務器發送請求時,它會返回響應的特定信息Python是完全面向對象的語言。函數、模塊、數字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。1.4Python的安裝與使用
本書以Windows操作系統為例,講述在Windows系統64位下安裝并運行Python。此外,讀者也可以在Windows中的cmd命令提示符中輸入python,進入程序運行界面,并在>>>后輸入內容print(“hi,all”),也可直接顯示運行結果Python的語句很特別,它沒有像其他很多語言那樣把要執行的語句用成對的{}花括號包起來,而是把語句向右邊縮進了,這就是Python的風格,它是靠縮進語句來表示要執行的語句。在Python的編譯環境中會自動把要縮進的語句進行縮進,用戶也可以按Tab鍵或者空格鍵進行縮進,下面語句為典型的Python程序書寫風格。ifs>=0:s=math.sqrt(s)print(“平方根是:”,s)else:print(“負數不能開平方”)
Python程序設計實例如下。(1)input輸入name=input("pleaseenteryourname:")print("hello,"+name+"!")運行結果如下:pleaseenteryourname:owenhello,owen!
(2)for循環sum=1fornuminrange(1,4):sum+=numprint(sum)運行結果為:7
(3)while循環n=1whilen<=100:print('當前數字是:',n)n+=1運行結果如下:當前數字是:1當前數字是:2當前數字是:3當前數字是:4當前數字是:5……當前數字是:97當前數字是:98當前數字是:99當前數字是:100
(4)if判斷age=input("pleaseenteryourage:")age=int(age)ifage>=18:print("youareoldenoughtovote")else:print("sorry,youaretooyoungtovote")
運行結果如下:pleaseenteryourage:32youareoldenoughtovote或是pleasee
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 菏澤市重點中學2025年高三第二次調研測試物理試題理試題含解析
- 河南焦作市沁陽市2025屆初三年級第一次質量調研生物試題試卷含解析
- 浙江機電職業技術學院《特效化妝工藝》2023-2024學年第一學期期末試卷
- 紅色簡約商務風季度績效考核報告
- 電機在醫療放射設備中的應用考核試卷
- 森林公園生態旅游市場品牌建設與競爭力提升考核試卷
- 煤氣化中的智能化制造技術發展前景考核試卷
- 工程質量事故分析總復習考核試卷
- 液壓技術在物料搬運設備中的重要性考核試卷
- 2025屆上海市長寧區高三二模考試數學試卷
- DB44-T 2283-2021水利工程生態設計導則1-(高清現行)
- DB23T 2711-2020 建筑電氣防火檢測技術規程
- XX縣城區新建公廁、生活垃圾中轉站項目實施方案可行性研究報告
- 足球裁判規則PPT
- 利潤分配專項審計
- 探索性數據分析簡介課件
- Q∕SY 01186-2020 地震資料構造解釋技術規范
- 刨花板生產線
- PPT腎癌診療指南CSCO課件
- 螺紋的標注-PPT課件
- 《港口裝卸工藝》課件chap3 件雜貨
評論
0/150
提交評論