項目七 爬取網(wǎng)頁數(shù)據(jù)_第1頁
項目七 爬取網(wǎng)頁數(shù)據(jù)_第2頁
項目七 爬取網(wǎng)頁數(shù)據(jù)_第3頁
項目七 爬取網(wǎng)頁數(shù)據(jù)_第4頁
項目七 爬取網(wǎng)頁數(shù)據(jù)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目七爬取網(wǎng)絡(luò)數(shù)據(jù)目錄7.2【任務(wù)2】寫入讀取數(shù)據(jù)7.1【任務(wù)1】使用Requests庫爬取小說網(wǎng)站案例分析3本任務(wù)是使用Requests爬取黨校同學(xué)的網(wǎng)址,之后再將小說中每章節(jié)的內(nèi)容爬取下來,保存在本地。需求描述案例分析4使用requests獲取網(wǎng)頁源代碼。使用正則表達式獲取內(nèi)容。使用文件進行操作。設(shè)計思路任務(wù)一使用Requests庫爬取小說網(wǎng)站5案例展示知識點講解6010203網(wǎng)絡(luò)爬蟲的類型網(wǎng)絡(luò)爬蟲的概念爬蟲實現(xiàn)網(wǎng)絡(luò)爬蟲的概念網(wǎng)絡(luò)爬蟲的概念網(wǎng)絡(luò)爬蟲(webcrawler)又稱為網(wǎng)絡(luò)蜘蛛(webspider)或網(wǎng)絡(luò)機器人(webrobot),是模擬客戶端(瀏覽器)發(fā)送網(wǎng)絡(luò)請求,獲取響應(yīng),并按照自定義的規(guī)則提取數(shù)據(jù)的程序,簡單來說,就是發(fā)送與瀏覽器一樣的請求,獲取與瀏覽器所獲取的一樣的數(shù)據(jù)。網(wǎng)絡(luò)爬蟲本質(zhì)上是一段計算機程序或腳本,其按照一定的邏輯和算法規(guī)則自動地抓取和下載萬維網(wǎng)的網(wǎng)頁,是搜索引擎的一個重要組成部分。7網(wǎng)絡(luò)爬蟲的類型通用網(wǎng)絡(luò)爬蟲通用網(wǎng)絡(luò)爬蟲又稱全網(wǎng)爬蟲,爬行對象由一批種子URL擴充至整個Web,主要為門戶站點、搜索引擎和大型Web服務(wù)提供商采集數(shù)據(jù)。通過網(wǎng)絡(luò)爬取目標(biāo)資源在全互聯(lián)網(wǎng)中,爬取數(shù)據(jù)巨大。通用網(wǎng)絡(luò)爬蟲的基本構(gòu)成:初始URL集合,URL隊列,頁面爬行模塊,頁面分析模塊,頁面數(shù)據(jù)庫,鏈接過濾模塊等構(gòu)成。其爬行策略主要有深度優(yōu)先爬行策略和廣度優(yōu)先爬行策略。8網(wǎng)絡(luò)爬蟲的類型聚焦網(wǎng)絡(luò)爬蟲聚焦網(wǎng)絡(luò)爬蟲又稱為主題網(wǎng)絡(luò)爬蟲,是指選擇性的爬取那些與預(yù)先定義好的主題相關(guān)頁面的網(wǎng)絡(luò)爬蟲。主要應(yīng)用在對特定信息的爬取,為某一類特定的人群提供服務(wù)。聚焦網(wǎng)絡(luò)爬蟲的基本構(gòu)成:初始URL,URL隊列,頁面爬行模塊,頁面分析模塊,頁面數(shù)據(jù)庫,連接過濾模塊,內(nèi)容評價模塊,鏈接評價模塊等構(gòu)成。9網(wǎng)絡(luò)爬蟲的類型增量式網(wǎng)絡(luò)爬蟲増量式網(wǎng)絡(luò)爬蟲支隊已下載網(wǎng)頁采集增量式更新或只爬取新產(chǎn)生的及意見發(fā)生變化的網(wǎng)頁,對于未發(fā)生內(nèi)容變化的網(wǎng)頁,則不會爬取。增量式網(wǎng)絡(luò)爬蟲在一定程度上能夠保證所爬取的頁面盡可能是新頁面。10網(wǎng)絡(luò)爬蟲的類型深層頁面爬蟲Web頁面按存在方式分為表層網(wǎng)頁和深層網(wǎng)頁。表層網(wǎng)頁是傳統(tǒng)搜索引擎可以索引的頁面,是以超鏈接可以達到的、靜態(tài)網(wǎng)頁為主的Web頁面。深層網(wǎng)頁是大部分內(nèi)容不能通過靜態(tài)鏈獲取的,隱藏在搜索表單后,只有用戶提交一些關(guān)鍵詞才能獲得的Web頁面。例如,那些用戶注冊后內(nèi)容才可見的網(wǎng)頁就屬于深層頁面。11爬蟲實現(xiàn)爬蟲的基本流程用戶獲取網(wǎng)絡(luò)數(shù)據(jù)有兩種方式,一種是瀏覽器提交請求→下載網(wǎng)頁代碼→解析成頁面;另一種是模擬瀏覽器發(fā)送請求(獲取網(wǎng)頁代碼)→提取有用的數(shù)據(jù)→存放于數(shù)據(jù)庫或文件中。爬蟲一般是使用第二種方式。爬取流程如圖所示。12爬蟲實現(xiàn)發(fā)起請求在爬蟲過程中一般使用http庫向目標(biāo)站點發(fā)送請求,即發(fā)送一個Request,該請求中包含請求頭和請求體。請求頭為User-agent:請求頭中如果沒有user-agent客戶端配置,服務(wù)端可能當(dāng)做一個非法用戶host;請求體:如果是get方式,請求體沒有內(nèi)容(get請求的請求體放在url后面參數(shù)中,直接能看到);如果是post方式,請求體是formatdata。13爬蟲實現(xiàn)獲取響應(yīng)內(nèi)容如果發(fā)送請求成功,服務(wù)器能夠正常響應(yīng),則會得到一個Response,Response包含:html,json,圖片,視頻等。14解析內(nèi)容響應(yīng)的內(nèi)容如果是HTML數(shù)據(jù),則需要正則表達式(RE模塊)、第三方解析庫如Beautifulsoup,pyquery等解析。如果是json數(shù)據(jù),需要使用JSON模塊接續(xù),如果是二進制文件,則需要以wb的方式寫入文件。爬蟲實現(xiàn)保存數(shù)據(jù)解析完的數(shù)據(jù)可以保存在數(shù)據(jù)庫中,常用的數(shù)據(jù)庫有MySQL,Mongdb、Redis等,或者可以保存問JSON、excel、txt文件。15爬蟲的主要框架在Python中,爬蟲框架很多,常見的爬蟲框架主要有Scrapy框架、Pyspider框架和CoB框架。Scrapy框架是Python中最著名、最受歡迎的爬蟲框架。它是一個相對成熟的框架,有著豐富的文檔和開放的社區(qū)交流空間。Scrapy框架是為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)面編寫的,可以應(yīng)用在包括數(shù)據(jù)挖掘、信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。爬蟲實現(xiàn)16爬蟲的主要框架Pyspider框架是國人架寫的、用Python實現(xiàn)的、功能強大的網(wǎng)絡(luò)爬蟲系統(tǒng),能在瀏覽器界面上進行腳本的編寫、功能的調(diào)度和爬取結(jié)果的實時查詢,后端使用常用的數(shù)據(jù)庫進行爬取結(jié)果的存儲,還能定時設(shè)置任務(wù)與任務(wù)優(yōu)先級等。CoB框架是一個分布式的爬蟲框架,用戶只需編寫幾個特定的函數(shù),而無需關(guān)注分布式運行的細節(jié),任務(wù)會被自動分配到多臺機器上,整個過穩(wěn)對用戶是通明的。目錄7.2【任務(wù)2】寫入讀取數(shù)據(jù)7.1【任務(wù)1】使用Requests庫爬取小說網(wǎng)站案例分析18本任務(wù)是爬取html-color-codes網(wǎng)站的tr標(biāo)簽里面的style和tr下幾個并列的td標(biāo)簽數(shù)據(jù)并保存到數(shù)據(jù)庫中,通過數(shù)據(jù)庫命令查看表中的內(nèi)容。需求描述案例分析19分析網(wǎng)站。爬取網(wǎng)站。將爬取的數(shù)據(jù)保存在數(shù)據(jù)庫中。使用SQL命令查看數(shù)據(jù)庫中的數(shù)據(jù)。設(shè)計思路任務(wù)二使用正則表達式提取網(wǎng)頁內(nèi)容20案例展示知識點講解21010203CSV數(shù)據(jù)寫入和讀取BeautifulSoupMySQL數(shù)據(jù)寫入和讀取BeautifulSoupBeautifulSoupBeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能夠通過你喜歡的轉(zhuǎn)換器實現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的方式。BeautifulSoup安裝命令如下:>pipinstallbeautifulsoup422CSV數(shù)據(jù)寫入和讀取CSV概述23CSV(Commae-SeparetedValues,逗號分隔值)是國際上通用的一二維數(shù)據(jù)存儲格式,其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),文件的每一行都是一個數(shù)據(jù)記錄。每個記錄由一個或多個字段組成,用逗號分隔。使用逗號作為字段分隔符是此文件格式的名稱的來源,因為分隔字符也可以不是逗號,有時也稱為字符分隔值。二維數(shù)據(jù)可視為多條一維數(shù)據(jù)的集合,當(dāng)二維數(shù)據(jù)只有一個元素時,這個二維數(shù)據(jù)就是一維數(shù)據(jù)。CSV數(shù)據(jù)寫入和讀取CSV概述24CSV在使用過程中需要注意以下格式規(guī)范:以純文本形式存儲表格數(shù)據(jù)文件的每一行對應(yīng)表格中的一條數(shù)據(jù)記錄每條記錄由一個或多個字段組成字段之間使用逗號(英文、半角)分隔CSV也稱字符分隔值CSV數(shù)據(jù)寫入和讀取CSV讀取25對CSV文件的讀取有兩種方式,一種是通過列表下標(biāo)讀取,另一種通過key獲取。通過列表下標(biāo)讀取文件時,直接使用open()函數(shù)打開csv文件。使用csv.reader()方法,其中參數(shù)為指針。因為該csv文件有表頭,使用可以使用next()函數(shù)直接跳過第一組數(shù)據(jù),即表頭數(shù)據(jù)。然后直接通過列表下標(biāo)獲取想要的數(shù)據(jù)。CSV數(shù)據(jù)寫入和讀取CSV讀取26示例代碼如下。import

csvwith

open('stock.csv','r')asfp:

#reader是個迭代器

reader

=

csv.reader(fp)

next(reader)

for

i

in

reader:

#print(i)

name

=

i[3]

volumn

=

i[-1]

print({'name':name,'volumn':volumn})CSV數(shù)據(jù)寫入和讀取CSV文件的寫入27使用writer創(chuàng)建對象,writerow(s)寫入:寫入數(shù)據(jù)到csv文件,需要創(chuàng)建一個writer對象,才可以使用writerow寫入一行,而writerows是全部寫入。其中默認下newline=‘\n’即寫入一行就會換行,所以需要改成空,數(shù)據(jù)都是存放在列表中。示例代碼如下。with

open("classroom.csv",'w',encoding='utf-8',newline='')asfp:

writer

=

csv.writer(fp)

writer.writerow(headers)

writer.writerows(value)CSV數(shù)據(jù)寫入和讀取CSV文件的寫入28使用DictWriter創(chuàng)建對象,writerow(s)寫入:當(dāng)數(shù)據(jù)是存放在字典中可以使用DictWriter創(chuàng)建writer對象,其中,需要傳兩個參數(shù),第一個是指針,第二個是表頭信息。當(dāng)使用DictWriter創(chuàng)建對象時,寫入表頭還需要執(zhí)行writeheader()操作。示例代碼如下。import

csvwith

open("classroom1.csv",'w',encoding='utf-8',newline='')asfp:#默認newline='\n'

writer

=

csv.DictWriter(fp,headers)

writer.writeheader()

writer.writerows(value)MySQL數(shù)據(jù)寫入和讀取MySQL數(shù)據(jù)寫入和讀取29PyMySQL是在Python3.x版本中用于連接MySQL服務(wù)器的一個庫。安裝PyMySQL的命令如下:pipinstallpymysqlPython與MySQL數(shù)據(jù)庫連接的過程如下:①導(dǎo)入連接MySQL需要的包pymysql:importpymysql;②創(chuàng)建連接:con=pymysql.connect("主機名","用戶名","密碼","所要連接

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論