Python程序設(shè)計與大數(shù)據(jù)-第7章-網(wǎng)絡(luò)爬蟲_第1頁
Python程序設(shè)計與大數(shù)據(jù)-第7章-網(wǎng)絡(luò)爬蟲_第2頁
Python程序設(shè)計與大數(shù)據(jù)-第7章-網(wǎng)絡(luò)爬蟲_第3頁
Python程序設(shè)計與大數(shù)據(jù)-第7章-網(wǎng)絡(luò)爬蟲_第4頁
Python程序設(shè)計與大數(shù)據(jù)-第7章-網(wǎng)絡(luò)爬蟲_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、7.1網(wǎng)絡(luò)爬蟲工作的基本原理7.2網(wǎng)頁內(nèi)容獲取-requests庫概述7.3網(wǎng)頁內(nèi)容解析-Beautiful Soup庫7.6實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集習(xí)題7.5實戰(zhàn):熱門電影搜索of5617.7實戰(zhàn):全國空氣質(zhì)量第七章網(wǎng)絡(luò)爬蟲7.4正則表達(dá)式第七章 網(wǎng)絡(luò)爬蟲of3127.1.1 網(wǎng)頁的概念7.1 類的方法1、URL的含義URL(Uniform Resource Locator,URL)稱為統(tǒng)一資源定位符,也稱為網(wǎng)址?;ヂ?lián)網(wǎng)上的每個頁面,都對應(yīng)一個URL。如:瀏覽上海市空氣質(zhì)量和pm2.5指標(biāo)的網(wǎng)址為/air/shanghai.html 。URL主要包含四個部分:協(xié)議部分,如上海市空氣質(zhì)量網(wǎng)

2、址的協(xié)議為“http:”,表示超文本傳輸協(xié)議;網(wǎng)站名部分,如上海市空氣質(zhì)量網(wǎng)址的網(wǎng)站名部分為,表示該網(wǎng)頁所在的主機(jī)位置;端口部分,跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符,端口不是一個URL必須的部分,如果采用默認(rèn)端口80,則可以省略端口部分;虛擬目錄和文件名部分,如上海市空氣質(zhì)量網(wǎng)址的虛擬目錄和文件名部分內(nèi)容為/air/shanghai.html,表示該網(wǎng)頁在這個主機(jī)上的具體路徑。第七章 網(wǎng)絡(luò)爬蟲of3137.1.1 網(wǎng)頁的概念7.1 類的方法2、頁面的渲染用戶若想要瀏覽城市空氣質(zhì)量排名情況,必須輸入網(wǎng)址:/air。得到如圖7.1 的結(jié)果,網(wǎng)頁的樣式,實際上是html源代碼經(jīng)

3、過渲染后形成的。這個頁面實際上是用戶通過瀏覽器向DNS服務(wù)器提交/air后,找到web主機(jī)服務(wù)器,主機(jī)服務(wù)器經(jīng)過解析,將包含圖片、HTML、JS、 CSS等文件返回到用戶瀏覽器,用戶瀏覽器將這些文件的代碼解析渲染,最終就是用戶看到的結(jié)果。整個這個過程稱為用戶的請求和響應(yīng),響應(yīng)給客戶的是html代碼。第七章 網(wǎng)絡(luò)爬蟲of3147.1.1 網(wǎng)頁的概念7.1 類的方法3、網(wǎng)頁文件的格式網(wǎng)頁文件主要是由各種標(biāo)簽對構(gòu)成的一個純文本文件,如:與標(biāo)簽對,與標(biāo)簽對等,不同的標(biāo)簽有不同的作用。如:li標(biāo)簽定義列表項目,span標(biāo)簽被用來組合文檔中的行內(nèi)元素。標(biāo)簽可以有屬性,可以有顯示的文本。下面以表格第一行樂山

4、市對應(yīng)的第二列的html代碼(樂山市)為例進(jìn)行說明:與:是一對標(biāo)簽,class=td td-2nd,說明,span標(biāo)簽有一個class屬性,值為td td-2nd,用于設(shè)置列的外觀。樂山市,是span標(biāo)簽的內(nèi)嵌標(biāo)簽,用于設(shè)置超鏈接的,超鏈接文本是“樂山市”,超鏈接網(wǎng)址是/air/leshan.html,是個相對路徑,絕對路徑是/air/leshan.html。第七章 網(wǎng)絡(luò)爬蟲of3157.1.2 網(wǎng)絡(luò)爬蟲的工作流程7.1 類的方法網(wǎng)絡(luò)爬蟲實質(zhì)上是一個能自動下載網(wǎng)頁的程序,它是搜索引擎中最核心的部分。通用網(wǎng)絡(luò)爬蟲是從一個或若干個初始網(wǎng)頁上的URL開始,讀取網(wǎng)頁的代碼并對頁面結(jié)構(gòu)進(jìn)行分析、過濾,并

5、對感興趣的內(nèi)容建立索引,同時提取網(wǎng)頁上的其他感興趣的超鏈接地址,放入到待爬行隊列中,如此循環(huán),直到滿足系統(tǒng)的停止條件為止。在爬取網(wǎng)頁過程中,如何根據(jù)當(dāng)前網(wǎng)頁的超鏈接頁面,形成待爬行隊列呢?目前有基于IP 地址搜索策略、廣度優(yōu)先策略、深度優(yōu)先策略和最佳優(yōu)先等,具體請看相關(guān)文檔。第七章 網(wǎng)絡(luò)爬蟲of3167.1.3 Python與網(wǎng)頁爬蟲7.1 類的方法使用Python 語言實現(xiàn)網(wǎng)絡(luò)爬蟲和信息提交是非常簡單的事情,代碼行數(shù)很少,也無須知道網(wǎng)絡(luò)通信等方面知識,非常適合非專業(yè)讀者使用。然而,肆意的爬取網(wǎng)絡(luò)數(shù)據(jù)并不是文明現(xiàn)象,通過程序自動提交內(nèi)容爭取競爭性資源也不公平。就像那些肆意的推銷電話一樣,他們無

6、視接聽者意愿,不僅令人討厭也有可能引發(fā)法律糾紛。在互聯(lián)網(wǎng)上爬取數(shù)據(jù),要遵從Robots 排除協(xié)議(Robots Exclusion Protocol),它也被稱為爬蟲協(xié)議,是網(wǎng)站管理者表達(dá)是否希望爬蟲自動獲取網(wǎng)絡(luò)信息意愿的方法。管理者可以在網(wǎng)站根目錄放置一個robots.txt 文件,并在文件中列出哪些鏈接不允許爬蟲爬取。一般搜索引擎的爬蟲會首先捕獲這個文件,并根據(jù)文件要求爬取網(wǎng)站內(nèi)容。Robots 排除協(xié)議重點約定不希望爬蟲獲取的內(nèi)容,如果沒有該文件則表示網(wǎng)站內(nèi)容可以被爬蟲獲得,然而,Robots 協(xié)議不是命令和強制手段,只是國際互聯(lián)網(wǎng)的一種通用道德規(guī)范。絕大部分成熟的搜索引擎爬蟲都會遵循這

7、個協(xié)議,建議個人也能按照互聯(lián)網(wǎng)規(guī)范要求合理使用爬蟲技術(shù)。7.1網(wǎng)絡(luò)爬蟲工作的基本原理7.2網(wǎng)頁內(nèi)容獲取-requests庫概述7.3網(wǎng)頁內(nèi)容解析-Beautiful Soup庫7.6實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集習(xí)題7.5實戰(zhàn):熱門電影搜索of5677.7實戰(zhàn):全國空氣質(zhì)量第七章網(wǎng)絡(luò)爬蟲7.4正則表達(dá)式第七章 網(wǎng)絡(luò)爬蟲of3187.2.1 requests對象7.2 網(wǎng)頁內(nèi)容獲取-requests庫概述http工作原理:HTTP是基于請求-響應(yīng)模式的,客戶端發(fā)出請求叫Request,服務(wù)器端的響應(yīng)叫Response。HTTP請求服務(wù)器端,常用的方式是GET和POST。通常,GET表示向指定的服務(wù)

8、器請求數(shù)據(jù),POST表示向指定的服務(wù)器提交要被處理的數(shù)據(jù)。Requests請求的相關(guān)函數(shù):Get(url,timeout=n):對應(yīng)HTTP的get方法,獲取網(wǎng)頁內(nèi)容,timeout設(shè)定每次請求的超時時間,單位秒。該函數(shù)將網(wǎng)頁的內(nèi)容封裝成一個Response對象并返回。Post(url,data=key:value): 對應(yīng)HTTP的post方式,其中字典用于傳遞客戶端數(shù)據(jù)。第七章 網(wǎng)絡(luò)爬蟲of3197.2.2 response對象7.2 網(wǎng)頁內(nèi)容獲取-requests庫概述通過Response對象的屬性可以獲取網(wǎng)頁內(nèi)容。屬性:Status_code:http請求返回的狀態(tài),整數(shù),200表示連

9、接成功,404表示失敗。在處理網(wǎng)頁數(shù)據(jù)前,要先判斷該狀態(tài)值。Text:頁面內(nèi)容,以字符串形式存儲在text中。Encoding:HTTP響應(yīng)內(nèi)容的編碼格式,通過此屬性可以更改返回頁面的編碼格式,便于處理中文。方法:Json():如果HTTP響應(yīng)頁面包含JSON格式數(shù)據(jù),該方法能夠在HTTP 響應(yīng)內(nèi)容中解析存在的JSON 數(shù)據(jù),這將帶來解析HTTP的便利。raise_for_status():方法能在非成功響應(yīng)后產(chǎn)生異常,即只要返?;氐恼埱鬆顟B(tài)status_code 不是200,這個方法會產(chǎn)生一個異常,用于tryexcept 語句。使用異常處理語句可以避免設(shè)置一堆復(fù)雜的if 語句,只需要在收到響

10、應(yīng)調(diào)用這個方法。第七章 網(wǎng)絡(luò)爬蟲of31107.2.2 response對象7.2 網(wǎng)頁內(nèi)容獲取-requests庫概述當(dāng)遇到網(wǎng)絡(luò)問題時阿,requests 會產(chǎn)生幾種常用異常。例如:DNS 查 詢 失 敗 、 拒 絕 連 接 等 , requests 會 拋 出ConnectionError 異常。遇到無效HTTP 響應(yīng)時,requests 則會拋出HTTPError 異常。若請求url 超時,則拋出Timeout 異常。請求超過了設(shè)定的最大重定向次數(shù),則會拋出一個TooManyRedirects 異常。所以在使用requests 時,通常需要將此語句放在try快中進(jìn)行處理。第七章 網(wǎng)絡(luò)爬蟲

11、of31117.2.2 response對象7.2 網(wǎng)頁內(nèi)容獲取-requests庫概述【案例7-1】爬取天堂圖片網(wǎng)中小黃人圖片網(wǎng)頁的內(nèi)容import requestsdef gethtmltext(url): try: r=requests.get(url,timeout=30) r.raise_for_status() return r.text except: return “url=/tupian/xiaohuangren_t21343/print(gethtmltext(url)7.1網(wǎng)絡(luò)爬蟲工作的基本原理7.2網(wǎng)頁內(nèi)容獲取-requests庫概述7.3網(wǎng)頁內(nèi)容解析-Beautifu

12、l Soup庫7.6實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集習(xí)題7.5實戰(zhàn):熱門電影搜索of56127.7實戰(zhàn):全國空氣質(zhì)量第七章網(wǎng)絡(luò)爬蟲7.4正則表達(dá)式第七章 網(wǎng)絡(luò)爬蟲of31137.3.1 Beautiful Soup庫概述7.3 網(wǎng)頁內(nèi)容解析-Beautiful Soup庫beautifulsoup4 庫,也稱為Beautiful Soup 庫或bs4 庫,用于解析和處理HTML和XML。它的最大優(yōu)點是能根據(jù)HTML 和XML 語法建立解析樹,進(jìn)而高效解析其中的內(nèi)容。類似于c#中的或HTTP中的文檔類HTML 建立的Web 頁面一般非常復(fù)雜,除了有用的內(nèi)容信息外,還包括大量用于頁面格式的元素,直接解

13、析一個Web 網(wǎng)頁需要深入了解HTML 語法,而且比較復(fù)雜。beautifulsoup4 庫將專業(yè)的Web 頁面格式解析部分封裝成函數(shù),提供了若干有用且便捷的處理函數(shù)。有關(guān)beautifulsoup4 庫的更多介紹請參考這個第三方庫主頁: /software/BeautifulSoup/bs4/第七章 網(wǎng)絡(luò)爬蟲of31147.3.1 Beautiful Soup庫概述7.3 網(wǎng)頁內(nèi)容解析-Beautiful Soup庫例如:有一個描述學(xué)生選課的XML代碼,表示20004146學(xué)生選修了2門課,20004176選修了1門課。20004146111167 2222 78 200041762222

14、70 第七章 網(wǎng)絡(luò)爬蟲of31157.3.1 Beautiful Soup庫概述7.3 網(wǎng)頁內(nèi)容解析-Beautiful Soup庫它對應(yīng)的Beautiful Soup對象的邏輯結(jié)構(gòu)可以理解成這樣一棵樹。樹中一般有4類節(jié)點: Tag , NavigableString , BeautifulSoup , Comment,但很多時候,可以把節(jié)點當(dāng)作 Tag 對象。第七章 網(wǎng)絡(luò)爬蟲of31167.3.2 beautifulsoup4 庫常用方法和tag節(jié)點7.3 網(wǎng)頁內(nèi)容解析-Beautiful Soup庫beautifulsoup4 提供Xpath操作方式解析數(shù)據(jù):1.即按照解析樹的邏輯結(jié)構(gòu),解

15、析數(shù)據(jù)。2.解析樹上的常用節(jié)點是tag節(jié)點。3.常用方法:BeautifulSoup(html,”html.parser”):該方法需要兩個參數(shù),第一參數(shù)是需要提取數(shù)據(jù)的html文檔內(nèi)容或XML,第二個參數(shù)是指定解析器。該方法的目的是生成一顆解析樹。find_all(name,attrs,recursive,string,limit):方法可以根據(jù)標(biāo)簽名字、標(biāo)簽屬性和內(nèi)容檢索并返回標(biāo)簽列表。name為標(biāo)簽名;attrs為標(biāo)簽的屬性名和值,采用JSON表示;recursive,設(shè)置查找層次;string標(biāo)簽的字符串內(nèi)容;limit返回匹配結(jié)果的個數(shù)。利用 string參數(shù)可以實現(xiàn)模糊查找。fin

16、d(name,attrs,recursive,string):返回找到的第一個結(jié)果,find_all()函數(shù)由于可能返回更多結(jié)果,所以采用列表形式存儲返回結(jié)果;find()函數(shù)返回字符串形式,找不到,返回None。第七章 網(wǎng)絡(luò)爬蟲of31177.3.2 beautifulsoup4 庫常用方法和tag節(jié)點7.3 網(wǎng)頁內(nèi)容解析-Beautiful Soup庫例如:根據(jù)選課學(xué)號和門數(shù)標(biāo)簽字符串,輸出選課的學(xué)號。 soup = BeautifulSoup(200041462 201810125) tag = soup.scs print(tag.string) print( tag.contents

17、0.name) print( tag.contents0.sno.string) soup.find_all(sno)7.1網(wǎng)絡(luò)爬蟲工作的基本原理7.2網(wǎng)頁內(nèi)容獲取-requests庫概述7.3網(wǎng)頁內(nèi)容解析-Beautiful Soup庫7.6實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集習(xí)題7.5實戰(zhàn):熱門電影搜索of56187.7實戰(zhàn):全國空氣質(zhì)量第七章網(wǎng)絡(luò)爬蟲7.4正則表達(dá)式第七章 網(wǎng)絡(luò)爬蟲of31197.4.1 正則表達(dá)式概念7.4 正則表達(dá)式從網(wǎng)頁中解析需要的數(shù)據(jù),除了采用beautifulsoup4 庫的方法,也可以根據(jù)被查找字符串的特征,采用正則表達(dá)式的方法,得到符合條件的子字符串。正則表達(dá)式庫是

18、python的標(biāo)準(zhǔn)庫,使用時:import re,即可。正則表達(dá)式(Regular Expression):稱為規(guī)則表達(dá)式,又稱為規(guī)則字符串,它通過一個字符序列來表示滿足某種邏輯條件的字符串,主要用于字符串模式匹配或字符串匹配。一個正則表達(dá)式由字母、數(shù)字和一些特殊符號組成,特殊符號也稱為元字符,在正則表達(dá)式中具有特殊的含義,可以用來匹配一個或若干個滿足某種條件的字符,這些元字符才是構(gòu)成正則表達(dá)式的關(guān)鍵要素。正則表達(dá)式通過元字符的各種運用,可以表示豐富的匹配字符串。對程序員來說,如果需要從源字符串中得到需要的子字符串(也稱結(jié)果字符串),首先要分析子字符串在源字符串中的規(guī)律,根據(jù)規(guī)律去描述正則表達(dá)

19、式。第七章 網(wǎng)絡(luò)爬蟲of31207.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式1、字符限定元字符字符作用m1m2mn表示一個字符集合(m1、m2mn等均為單個字符),表示可以與集合中的任意一個字符匹配m1m2mn表示可以與集合之外的任意一個字符匹配m-n表示一個字符范圍集合,表示可以與字符m到n之間的所有字符匹配m-n表示可以與集合范圍之外的任意一個字符匹配d用來匹配一個數(shù)字字符,相當(dāng)于“0-9”D用來匹配一個非數(shù)字字符,相當(dāng)于“0-9”w用來匹配一個單詞字符(包括數(shù)字、大小寫字母和下畫線),相當(dāng)于“A-Za-z0-9_”W用來匹配任意一個非單詞字符,相當(dāng)于“A-Za-z0-9_”s用來匹

20、配一個不可見字符(包括空格、制表符、換行符等)S用來匹配一個可見字符.用來匹配除了換行符外的任意一個字符第七章 網(wǎng)絡(luò)爬蟲of31217.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式【簡單案例】 import re str=南昌市17優(yōu)則: re.findall(rdd,str)17, 79, 80 #匹配出str中只含2個數(shù)字的字符串 re.findall(r6789d,str)#匹配出str中只含2個數(shù)字的字符串,且第一個數(shù)字符號可以是6或7或8或9 79, 80 re.findall(rtd.,str) #匹配出 str中以td開頭,第三個字符不是換行符的連續(xù)三個字符 td , td-,

21、 td , td-, td , td- s = aaa,bbb ccc high #定義字符串 re.findall(ra-zA-Z+,s)aaa, bbb, ccc, high #實現(xiàn)了分詞效果第七章 網(wǎng)絡(luò)爬蟲of31227.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式2、數(shù)量限定元字符字符作用*用來匹配前面的字符任意多次(0到多次)+用來匹配前面的字符一次或多次?用來匹配前面的字符零次或一次n用來匹配前面的字符n次,n是一個非負(fù)整數(shù)n,用來匹配前面的字符至少n次,n是一個非負(fù)整數(shù)n,m用來匹配前面的字符串至少n次,至多m次,m和n為非負(fù)整數(shù)且nm*?,+?,?,?跟在前面所述的任何一個數(shù)

22、量限定符后面時,表示匹配模式是非貪婪的,即盡可能少地匹配字符串。而默認(rèn)情況下,匹配是貪婪的,即盡可能多地匹配所搜索的字符串。請將案例7-2中注釋掉的正則表達(dá)式改為list1=re.findall(r_blank.1,? import re str=南昌市17優(yōu)則:# re.findall(rd2,str)等價于re.findall(rdd,str), re.findall(rddd,str) re.findall(rd2,str)17, 79, 800 #匹配出str中至少含2個數(shù)字的字符串 re.findall(rd1,bd1,str)79b800 #匹配出str中數(shù)字串中包含一個字母b的字

23、符串 s=fdfdaaaaadfefebbbbregex = .*? re.findall(regex,s)aaaaa, bbbb #從字符串中分離出標(biāo)簽對第七章 網(wǎng)絡(luò)爬蟲of31247.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式3分組元字符字符作用(正則表達(dá)式)將括號之間的正則表達(dá)式稱為一個子組(group),一個子組對應(yīng)一個匹配字符串,子組的匹配內(nèi)容會返回(?P=)也用來定義一個組。這種方式定義的組可以被組名索引進(jìn)行訪問,訪問方式為“(?P=name)”。|用來將兩個匹配條件進(jìn)行邏輯“或”運算 第七章 網(wǎng)絡(luò)爬蟲of31257.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式【簡單案例】

24、import re str=Sat May 28 22:18:59 1994:gsbxh:770134739-5-5Fri Dec 1 19:33:07 1995:odzfm:817817587-5-11則: regex = :(a-z2,13)(a-z2,13).(com|edu|net|org|gov) re.findall(regex,str) #只輸出分組內(nèi)的匹配字符串(gsbxh, wtkxw, gov), (odzfm, sqkqgefpjbd, gov)第七章 網(wǎng)絡(luò)爬蟲of31267.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式4、字符定位元字符字符作用用來匹配輸入字符串是否以

25、。開始。$用來匹配輸入字符串是否以。結(jié)束。b用來匹配一個單詞邊界(即單詞和空格之間的位置)。事實上,所謂單詞邊界不是一個字符,而只是一個位置。B用來匹配一個非單詞邊界。第七章 網(wǎng)絡(luò)爬蟲of31277.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式【簡單案例】 import re str=南昌市17優(yōu)則: re.findall(rtd,str)td, td, td, td, td, td re.findall(rtd,str) #判斷str是以td開頭,進(jìn)行匹配第七章 網(wǎng)絡(luò)爬蟲of31287.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式5. 轉(zhuǎn)義元字符字符作用元字符在符號在正則表達(dá)式中與特殊的

26、含義,如果想要匹配元字符,可以采用轉(zhuǎn)義的方式。如: ,*, .等第七章 網(wǎng)絡(luò)爬蟲of31297.4.2 正則表達(dá)式元字符介紹7.4 正則表達(dá)式【簡單案例】 import re str=南昌市17優(yōu)則: re.findall(r.*?,str)#匹配出str中所有 之間的字符串td td-2nd, /air/nanchang.html, _blank, td td-4rd, td td-4rd, f1, color:#79b800 re.findall(r.*?,str)td td-2nd, /air/nanchang.html, _blank, td td-4rd, td td-4rd, f1

27、, color:#79b800#通過結(jié)果可以看出,如果把元字符放在中,就不需要采用轉(zhuǎn)義方式。第七章 網(wǎng)絡(luò)爬蟲of31307.4.3 正則表達(dá)式的常用函數(shù)介紹7.4 正則表達(dá)式pile(pattern, flags=0)匹配任何可選的標(biāo)記來編譯正則表達(dá)式的模式,然后返回一個正則表達(dá)式對象 re.search(pattern,string, flags=0)使用可選標(biāo)記搜索字符串中第一次匹配正則表達(dá)式的對象。如果匹配成功,則返回匹配對象,否則返回Nonere.match(pattern, string, flags=0) 使用帶有可選標(biāo)記的正則表達(dá)式的模式來匹配字符串,匹配是從字符串的第一個字符開

28、始進(jìn)行。如果匹配成功,返回匹配對象,否則返回Nonere.findall(pattern, string, flags=0)查找字符串中所有匹配的子字符串,并返回一個字符串匹配列表 匹配對象.group(num = 0)返回整個匹配對象,或者編號為num的特定子組第七章 網(wǎng)絡(luò)爬蟲of31317.4.3 正則表達(dá)式的常用函數(shù)介紹7.4 正則表達(dá)式例如:下面的正則表達(dá)式定義從s中匹配出ip地址的內(nèi)容。 import re s=ipddresselsem1=re.search(r(010,1d0,1d|250-5).)3(010,1d0,1d|20-4d|250-5),s) print(m1.gro

29、up()#輸出 str=南昌市17優(yōu)武漢市17優(yōu) re.findall(r_blank(.1,?),str)#匹配出所有的城市名南昌市, 武漢市第七章 網(wǎng)絡(luò)爬蟲of31327.4.3 正則表達(dá)式的常用函數(shù)介紹7.4 正則表達(dá)式【案例】爬取解析并保存天堂圖片網(wǎng)的小黃人圖片import requestsimport re# 爬取天堂圖片網(wǎng)小黃人圖片網(wǎng)頁源碼url = /tupian/xiaohuangren_t21343/data = requests.get(url).text#小黃人圖片的超鏈接格式#regex = r(.*?),page) for item in myItems: print

30、( item)第七章 網(wǎng)絡(luò)爬蟲of31417.6 實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集url=/6674.htmlhtml=gethtmltext(url)#得到大論文的總篇數(shù)list1=re.findall(r(.*?),html)count=int(list10)print(大數(shù)據(jù)論文共+str(count)+篇)j=0#一頁顯示20篇論文,構(gòu)造出每頁論文的域名for i in range(1,count+1,20): print(第+str(j+1)+頁) if j=0: url=/6674.html else: url=/6674_+str(j)+.html j=j+1 #print(url)

31、 #讀取網(wǎng)頁并解析 html=gethtmltext(url)paper_title(html)第七章 網(wǎng)絡(luò)爬蟲of31427.6 實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集運行結(jié)果:7.1網(wǎng)絡(luò)爬蟲工作的基本原理7.2網(wǎng)頁內(nèi)容獲取-requests庫概述7.3網(wǎng)頁內(nèi)容解析-Beautiful Soup庫7.6實戰(zhàn):大數(shù)據(jù)論文文章標(biāo)題采集習(xí)題7.5實戰(zhàn):熱門電影搜索of56437.7實戰(zhàn):全國空氣質(zhì)量第七章網(wǎng)絡(luò)爬蟲7.4正則表達(dá)式第七章 網(wǎng)絡(luò)爬蟲of31447.7 實戰(zhàn):全國空氣質(zhì)量【案例】用beautifulsoup4爬取全國空氣質(zhì)量數(shù)據(jù)import requestsfrom bs4 import BeautifulSoup#一共有318座重點城市a=0 for col in range(3) for row in range(318)def gethtmltext(url): try: r=reque

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論