




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
14爬取與分析網頁中的數據14爬取與分析網頁中的數據第14章爬取與分析網頁中的數據本章內容爬取網頁的urllib庫和requests庫解析網頁的beautifulsoup4庫網頁爬取技術的應用爬取網頁就是通過程序下載網頁,分析網頁中的不同元素,從中提取有用的數據。第14章爬取與分析網頁中的數據本章內容爬取網頁就是通過程序14.1爬取網頁的urllib和requests庫網頁爬取,就是把URL地址中指定的網絡資源從網絡流中讀取出來,保存到本地。urllib和urllib2兩個標準庫均支持網頁內容讀取。Python3使用標準庫urllib庫來讀取網頁。requests是目前優秀的網頁內容抓取的第三方庫。14.1爬取網頁的urllib和requests庫14.1爬取網頁的urllib和requests庫爬取網頁的基礎知識1.HTTP協議用戶瀏覽網頁的過程是客戶端與Web服務器請求應答的過程。瀏覽器與服務器之間的通信的基礎是HTTP協議。HTTP協議是一個無狀態的協議,同一個客戶端的一次請求和上次請求沒有對應關系。2.HTTP工作過程(1)客戶端與服務器建立連接。(2)服務器接到請求后,給予相應的響應信息。(3)客戶端接收服務器所返回的信息,瀏覽器解析并顯示網頁。14.1爬取網頁的urllib和requests庫爬取網頁14.1爬取網頁的urllib和requests庫爬取網頁的基礎知識3.網絡爬蟲也叫網絡蜘蛛(WebSpider),Spider就是一只網上的蜘蛛,它是搜索引擎抓取系統的重要組成部分。網絡爬蟲的主要目的是將互聯網的網頁下載到本地從而保存文件或備份文件。Web站點上的每個資源都有唯一的地址,該地址稱為URL。protocol://hostname[:port]/path網絡爬蟲就是根據URL來獲取網頁信息的。網絡爬蟲應用分為兩個步驟:連接網絡并獲取網頁內容urllib(或requests);對獲得的網頁內容進行處理(BeautifulSoup4)。14.1爬取網頁的urllib和requests庫爬取網頁14.1爬取網頁的urllib和requests庫urllib庫1.urllib庫簡介urllib庫提供系列函數或方法,用于獲取網頁信息或下載網頁。
urllib.request模塊。
urllib.error模塊。
urllib.parse模塊。
urllib.robotparser模塊。2.使用urllib庫獲取網頁信息使用urllib.request.urlopen()函數可以打開一個網站,讀取并打印網頁信息。urllib.urlopen(url,data[,proxies])14.1爬取網頁的urllib和requests庫urll14.1爬取網頁的urllib和requests庫2.使用urllib庫獲取網頁信息urlopen()函數返回response對象函數的參數url表示遠程數據的路徑;data表示提交到url的數據;proxies用于設置代理。response對象的方法readline()、readlines()、fileno()、close()等方法。info()方法:返回一個httplib.HTTPMessage對象。
getcode()方法:返回HTTP狀態碼。如果是HTTP請求,200表示請求成功完成,404表示網址未找到。geturl():返回請求的url。例14-1抓取搜狐網首頁的前360個字節內容。14.1爬取網頁的urllib和requests庫2.使14.1爬取網頁的urllib和requests庫requests庫1.requests庫概述簡潔的處理HTTP請求的第三方庫,建立在Python的urllib3庫基礎上,是對urllib3庫的再封裝。requests庫包括URL獲取、HTTP長連接和連接緩存、自動內容解碼、文件分塊上傳、連接超時處理、流數據下載等功能。2.requests庫解析requests庫的requests.get()方法功能是網絡爬蟲和信息提交res=requests.get(url[,timeout=n])該函數返回的網頁內容會保存為一個response對象。參數url必須采用HTTP或HTTPS方式訪問,可選參數timeout用于設定每次請求超時時間。14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫requests庫下面的代碼測試requests.get()方法和requests.head()方法的返回值類型。
>>>importrequests>>>r=requests.get("")>>>type(r)<class'requests.models.Response'>>>>r2=requests.head("")>>>type(r2)<class'requests.models.Response'>14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫requests庫requests.get()返回的response對象代表響應。response對象的主要屬性如下。●statuscode:返回HTTP請求的狀態,200表示連接成功,404表示失敗。●text:HTTP響應內容的字符串形式,即url對應的頁面內容。●encoding:HTTP響應內容的編碼方式。●content:HTTP響應內容的二進制形式。Response對象提供了兩個方法。●json():如果HTTP響應內容包含JSON格式數據,則該方法解析JSON數據。●raise_for_status():如果status_code值不是200,則產生異常。14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫例14-3爬取網頁內容的示例。2importrequests4defgetHTMLText():5r=requests.get(url,timeout=15)6r.raise_for_status()7r.encoding='utf-8'#更改編碼方式為utf-88returnr.text[:200]10url=""11text=getHTMLText()12print(text)14.1爬取網頁的urllib和requests庫14.2解析網頁的beautifulsoup4庫beautifulsoup4庫概述beautifulsoup4庫也稱為bs4庫或BeautifulSoup庫Python用于網頁分析的第三方庫,用來快速轉換被抓取的網頁。beautifulsoup4將網頁轉換為一顆DOM樹。beautifulsoup4提供一些簡單的方法以及類Python語法來查找、定位、修改一棵轉換后的DOM樹,還能自動將送進來的文檔轉換為Unicode編碼。例14-4使用bs4庫訪問網頁元素。14.2解析網頁的beautifulsoup4庫beaut14.2解析網頁的beautifulsoup4庫beautifulsoup4庫的對象BeautifulSoup將HTML文檔轉換成一個樹形結構,每個結點都是
對象,可以歸納為4種類型:Tag、NavigableString、BeautifulSoup、Comment。Tag對象,HTML中的一個標簽。NavigableString對象,用于操縱標簽內部的文字,標簽的string屬性返回NavigableString對象。BeautifulSoup對象,表示的是一個文檔的全部內容,大部分時候可以把它看作是一個特殊的Tag。Comment對象,是一個特殊類型的NavigableSting對象,它的內容不包括注釋符號。14.2解析網頁的beautifulsoup4庫beaut14.2解析網頁的beautifulsoup4庫BeautifulSoup庫操作解析文檔樹1.遍歷文檔樹(1)獲取直接子結點contents屬性和children屬性可以獲取Tag的直接子結點。(2)獲取所有有子結點descendants屬性可以對所有Tag的子結點進行遞歸循環,需要遍歷獲取其中的內容。(3)獲取結點內容當標簽中不再包含標簽,string屬性返回標簽中的內容;標簽中內嵌唯一標簽,那么string屬性返回最里面標簽的內容;Tag包含了多個子標簽結點,string的輸出結果是None。14.2解析網頁的beautifulsoup4庫Beaut14.2解析網頁的beautifulsoup4庫BeautifulSoup庫操作解析文檔樹1.遍歷文檔樹(4)獲取多項內容strings屬性用于獲取多個內容,需要遍歷獲取。(5)父結點父結點是當前結點的上級結點,parent屬性用于獲取父結點。(6)兄弟結點兄弟結點可以理解為和本結點處在同一層級的結點,next_sibling屬性用于獲取當前結點的下一個兄弟結點,previous_sibling則與之相反,如果結點不存在,則返回None。14.2解析網頁的beautifulsoup4庫Beaut14.2解析網頁的beautifulsoup4庫 2.搜索文檔樹(1)find_all()方法搜索當前Tag的所有子結點,語法如下。find_all(name,attrs,recursive,text,**kwargs)
name:名字為name的標簽。
attrs:按照Tag標簽屬性值檢索,采用字典形式。
recursive:如果只想搜索Tag的直接子結點,可以使用參數recursive=False。
text:通過text參數可以搜索文本字符中內容。
limit:限制返回結果的數量。14.2解析網頁的beautifulsoup4庫 2.搜14.2解析網頁的beautifulsoup4庫 2.搜索文檔樹(2)find()方法find()方法返回找到的第一個結果。find(name,attrs,recursive,text)參數含義與find_all()方法完全相同。14.2解析網頁的beautifulsoup4庫 2.搜14.2解析網頁的beautifulsoup4庫3.用CSS選擇器篩選元素CSS的選擇器用于選擇網頁元素,可以分為標簽選擇器、類選擇器和id選擇器三種。在CSS中,標簽名不加任何修飾,類名前面需要加點(.)標識,id名前加#號來標識。在bs4庫中,也可以利用類似的方法來篩選元素,用到的方法是soup.select(),返回類型是列表。14.2解析網頁的beautifulsoup4庫3.用C14.3網頁爬取技術的應用Python爬取指定URL的網頁頁面,首先需要分析頁面的結構,了解標題、鏈接、時間等信息(即HTML元素和屬性的描述)。以爬取“遼寧本科教學網”的通知公告頁面為例,說明網頁爬取的過程。14.3網頁爬取技術的應用14.3網頁爬取技術的應用爬取單一網頁頁面的信息爬取頁面前的準備用GoogleChrome瀏覽器打開要爬取的頁面,進入網頁,打開“開發者工具”窗口。使用選擇工具選擇網頁元素。使用requests庫爬取網頁
使用bs4庫解析網頁例14-5使用requests庫和bs4庫網頁爬取示例。14.3網頁爬取技術的應用爬取單一網頁頁面的信息14.3網頁爬取技術的應用爬取來自多個頁面的信息爬取的信息可能需要來自多個頁面。在這種情況下,用戶可對爬取信息設置條件限制,例如設置爬取關鍵詞,或者檢索某一時間段的信息等。在例14-5的基礎上,爬取“遼寧本科教學網”通知公告頁面中2018年4月1日之后的信息使用requests庫爬取網頁。關鍵技術“下一頁”按鈕的使用日期格式的處理14.3網頁爬取技術的應用爬取來自多個頁面的信息14.3網頁爬取技術的應用爬取單一網頁頁面的信息查詢的信息可能來自多個頁面時,可通過“下一頁”按鈕,可以找到后續頁面的鏈接。當要爬取的內容很多時,用戶可以不斷單擊“下一頁”按鈕向后查找。觀察瀏覽器的地址欄,URL地址可以視為由兩部分組成,通過一部分是網址,另一部分是文件路徑,這部分地址應和“下一頁”按鈕的鏈接地址是一致的。在“開發者窗口”中,觀察“下一頁”按鈕對應的網頁中信息,找到該按鈕對應的頁面地址。不同頁面的地址表達是不一樣的,需要認真觀察找出規律。14.3網頁爬取技術的應用爬取單一網頁頁面的信息14.3網頁爬取技術的應用爬取單一網頁頁面的信息例14-6
使用requests庫和bs4庫爬取多個網頁的示例。14.3網頁爬取技術的應用爬取單一網頁頁面的信息小結介紹了爬取網頁的urllib庫和requests庫,講解了解析網頁的beautifulsoup4庫。通過示例介紹了爬取網頁信息的過程。小結作業
(1)分別使用urllib庫和requests庫爬取首頁內容。(2)編寫程序獲取http:///listinfo/NewsList_1002_1.html的招考要聞的信息。作業ThanksThanks14爬取與分析網頁中的數據14爬取與分析網頁中的數據第14章爬取與分析網頁中的數據本章內容爬取網頁的urllib庫和requests庫解析網頁的beautifulsoup4庫網頁爬取技術的應用爬取網頁就是通過程序下載網頁,分析網頁中的不同元素,從中提取有用的數據。第14章爬取與分析網頁中的數據本章內容爬取網頁就是通過程序14.1爬取網頁的urllib和requests庫網頁爬取,就是把URL地址中指定的網絡資源從網絡流中讀取出來,保存到本地。urllib和urllib2兩個標準庫均支持網頁內容讀取。Python3使用標準庫urllib庫來讀取網頁。requests是目前優秀的網頁內容抓取的第三方庫。14.1爬取網頁的urllib和requests庫14.1爬取網頁的urllib和requests庫爬取網頁的基礎知識1.HTTP協議用戶瀏覽網頁的過程是客戶端與Web服務器請求應答的過程。瀏覽器與服務器之間的通信的基礎是HTTP協議。HTTP協議是一個無狀態的協議,同一個客戶端的一次請求和上次請求沒有對應關系。2.HTTP工作過程(1)客戶端與服務器建立連接。(2)服務器接到請求后,給予相應的響應信息。(3)客戶端接收服務器所返回的信息,瀏覽器解析并顯示網頁。14.1爬取網頁的urllib和requests庫爬取網頁14.1爬取網頁的urllib和requests庫爬取網頁的基礎知識3.網絡爬蟲也叫網絡蜘蛛(WebSpider),Spider就是一只網上的蜘蛛,它是搜索引擎抓取系統的重要組成部分。網絡爬蟲的主要目的是將互聯網的網頁下載到本地從而保存文件或備份文件。Web站點上的每個資源都有唯一的地址,該地址稱為URL。protocol://hostname[:port]/path網絡爬蟲就是根據URL來獲取網頁信息的。網絡爬蟲應用分為兩個步驟:連接網絡并獲取網頁內容urllib(或requests);對獲得的網頁內容進行處理(BeautifulSoup4)。14.1爬取網頁的urllib和requests庫爬取網頁14.1爬取網頁的urllib和requests庫urllib庫1.urllib庫簡介urllib庫提供系列函數或方法,用于獲取網頁信息或下載網頁。
urllib.request模塊。
urllib.error模塊。
urllib.parse模塊。
urllib.robotparser模塊。2.使用urllib庫獲取網頁信息使用urllib.request.urlopen()函數可以打開一個網站,讀取并打印網頁信息。urllib.urlopen(url,data[,proxies])14.1爬取網頁的urllib和requests庫urll14.1爬取網頁的urllib和requests庫2.使用urllib庫獲取網頁信息urlopen()函數返回response對象函數的參數url表示遠程數據的路徑;data表示提交到url的數據;proxies用于設置代理。response對象的方法readline()、readlines()、fileno()、close()等方法。info()方法:返回一個httplib.HTTPMessage對象。
getcode()方法:返回HTTP狀態碼。如果是HTTP請求,200表示請求成功完成,404表示網址未找到。geturl():返回請求的url。例14-1抓取搜狐網首頁的前360個字節內容。14.1爬取網頁的urllib和requests庫2.使14.1爬取網頁的urllib和requests庫requests庫1.requests庫概述簡潔的處理HTTP請求的第三方庫,建立在Python的urllib3庫基礎上,是對urllib3庫的再封裝。requests庫包括URL獲取、HTTP長連接和連接緩存、自動內容解碼、文件分塊上傳、連接超時處理、流數據下載等功能。2.requests庫解析requests庫的requests.get()方法功能是網絡爬蟲和信息提交res=requests.get(url[,timeout=n])該函數返回的網頁內容會保存為一個response對象。參數url必須采用HTTP或HTTPS方式訪問,可選參數timeout用于設定每次請求超時時間。14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫requests庫下面的代碼測試requests.get()方法和requests.head()方法的返回值類型。
>>>importrequests>>>r=requests.get("")>>>type(r)<class'requests.models.Response'>>>>r2=requests.head("")>>>type(r2)<class'requests.models.Response'>14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫requests庫requests.get()返回的response對象代表響應。response對象的主要屬性如下。●statuscode:返回HTTP請求的狀態,200表示連接成功,404表示失敗。●text:HTTP響應內容的字符串形式,即url對應的頁面內容。●encoding:HTTP響應內容的編碼方式。●content:HTTP響應內容的二進制形式。Response對象提供了兩個方法。●json():如果HTTP響應內容包含JSON格式數據,則該方法解析JSON數據。●raise_for_status():如果status_code值不是200,則產生異常。14.1爬取網頁的urllib和requests庫requ14.1爬取網頁的urllib和requests庫例14-3爬取網頁內容的示例。2importrequests4defgetHTMLText():5r=requests.get(url,timeout=15)6r.raise_for_status()7r.encoding='utf-8'#更改編碼方式為utf-88returnr.text[:200]10url=""11text=getHTMLText()12print(text)14.1爬取網頁的urllib和requests庫14.2解析網頁的beautifulsoup4庫beautifulsoup4庫概述beautifulsoup4庫也稱為bs4庫或BeautifulSoup庫Python用于網頁分析的第三方庫,用來快速轉換被抓取的網頁。beautifulsoup4將網頁轉換為一顆DOM樹。beautifulsoup4提供一些簡單的方法以及類Python語法來查找、定位、修改一棵轉換后的DOM樹,還能自動將送進來的文檔轉換為Unicode編碼。例14-4使用bs4庫訪問網頁元素。14.2解析網頁的beautifulsoup4庫beaut14.2解析網頁的beautifulsoup4庫beautifulsoup4庫的對象BeautifulSoup將HTML文檔轉換成一個樹形結構,每個結點都是
對象,可以歸納為4種類型:Tag、NavigableString、BeautifulSoup、Comment。Tag對象,HTML中的一個標簽。NavigableString對象,用于操縱標簽內部的文字,標簽的string屬性返回NavigableString對象。BeautifulSoup對象,表示的是一個文檔的全部內容,大部分時候可以把它看作是一個特殊的Tag。Comment對象,是一個特殊類型的NavigableSting對象,它的內容不包括注釋符號。14.2解析網頁的beautifulsoup4庫beaut14.2解析網頁的beautifulsoup4庫BeautifulSoup庫操作解析文檔樹1.遍歷文檔樹(1)獲取直接子結點contents屬性和children屬性可以獲取Tag的直接子結點。(2)獲取所有有子結點descendants屬性可以對所有Tag的子結點進行遞歸循環,需要遍歷獲取其中的內容。(3)獲取結點內容當標簽中不再包含標簽,string屬性返回標簽中的內容;標簽中內嵌唯一標簽,那么string屬性返回最里面標簽的內容;Tag包含了多個子標簽結點,string的輸出結果是None。14.2解析網頁的beautifulsoup4庫Beaut14.2解析網頁的beautifulsoup4庫BeautifulSoup庫操作解析文檔樹1.遍歷文檔樹(4)獲取多項內容strings屬性用于獲取多個內容,需要遍歷獲取。(5)父結點父結點是當前結點的上級結點,parent屬性用于獲取父結點。(6)兄弟結點兄弟結點可以理解為和本結點處在同一層級的結點,next_sibling屬性用于獲取當前結點的下一個兄弟結點,previous_sibling則與之相反,如果結點不存在,則返回None。14.2解析網頁的beautifulsoup4庫Beaut14.2解析網頁的beautifulsoup4庫 2.搜索文檔樹(1)find_all()方法搜索當前Tag的所有子結點,語法如下。find_all(name,attrs,recursive,text,**kwargs)
name:名字為name的標簽。
attrs:按照Tag標簽屬性值檢索,采用字典形式。
recursive:如果只想搜索Tag的直接子結點,可以使用參數recursive=False。
text:通過text參數可以搜索文本字符中內容。
limit:限制返回結果的數量。14.2解析網頁的beautifulsoup4庫 2.搜14.2解析網頁的beautifulsoup4庫 2.搜索文檔樹(2)find()方法find()方法返回找到的第一個結果。find(name,attrs,recursive,text)參數含義與find_all()方法完全相同。14.2解析網頁的beautifulsoup4庫 2.搜14.2解析網頁的beautifulsoup4庫3.用CSS選擇器篩選元素CSS的選擇器用于選擇網頁元素,可以分為標簽選擇器、類選擇器和id選擇器三種。在CSS中,標簽名不加任何修飾,類名前面需要加點(.)標識,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京市六校聯合體高三語文作文
- 環保工程生態環境規劃考核試卷
- 中醫兒童保健專科建設專家共識解讀 2
- AIGC應用基礎課件
- 江西應用工程職業學院《外國文學二》2023-2024學年第二學期期末試卷
- 吉林省長春市九臺市2025年初三2月初三網上質量檢測試題生物試題含解析
- 江蘇省姜堰區溱潼二中市級名校2025屆初三期末生物試題含解析
- 上海市五愛高級中學2025屆第二學期高三年級期末教學質量檢測試題(一模)化學試題含解析
- 四川體育職業學院《數字欄目包裝技巧》2023-2024學年第二學期期末試卷
- 天津體育職業學院《影視作品鑒賞》2023-2024學年第二學期期末試卷
- 《基于Retinex算法的圖像去霧的MATLAB仿真研究》8800字(論文)
- 瀝青路面施工中的質量控制與驗收標準(2025年版)
- 美妝護膚知識培訓課件
- 2024年腎內科工作總結
- 2025銀行協議存款合同
- 《高級語言程序設計》課程思政教學案例設計-以循環結構程序設計為例
- 2024年中國酸奶乳品市場調查研究報告
- 滬科版八年級物理全冊《8 復習:大氣壓強、流體壓強》教案
- 中醫治療盆腔炎
- 2023年高考英語試卷(新課標Ⅰ卷)含答案解析
- DB32T 4878-2024居住區供配電設施建設標準
評論
0/150
提交評論