Python 程序設(shè)計語言項目化教程課件項目8 綜合實訓(xùn)-爬蟲_第1頁
Python 程序設(shè)計語言項目化教程課件項目8 綜合實訓(xùn)-爬蟲_第2頁
Python 程序設(shè)計語言項目化教程課件項目8 綜合實訓(xùn)-爬蟲_第3頁
Python 程序設(shè)計語言項目化教程課件項目8 綜合實訓(xùn)-爬蟲_第4頁
Python 程序設(shè)計語言項目化教程課件項目8 綜合實訓(xùn)-爬蟲_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目要求掌握爬蟲基本流程能夠使用requests模塊獲取網(wǎng)頁數(shù)據(jù)掌握html源碼分析并提取有用數(shù)據(jù)的方法掌握HTTP工作原理能夠使用pymysql模塊進行數(shù)據(jù)庫操作HTTP協(xié)議爬取與解析網(wǎng)站數(shù)據(jù)添加數(shù)據(jù)異常語句網(wǎng)絡(luò)爬蟲(又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

HTTP協(xié)議(HyperTextTransferProtocol,超文本傳輸協(xié)議):是一種發(fā)布和接收HTML頁面的方法。HTTPS(HypertextTransferProtocoloverSecureSocketLayer)簡單講是HTTP的安全版,HTTP的端口號為80。HTTP協(xié)議HTTP通信由兩部分組成:客戶端請求消息與服務(wù)器響應(yīng)消息。HTTP協(xié)議1.

HTTP的請求與響應(yīng)瀏覽器發(fā)送HTTP請求的過程:(1)當(dāng)用戶在瀏覽器的地址欄中輸入一個URL并按回車鍵之后,瀏覽器會向HTTP服務(wù)器發(fā)送HTTP請求。HTTP請求主要分為“Get”和“Post”兩種方法。(2)當(dāng)我們在瀏覽器輸入URL的時候,瀏覽器發(fā)送一個Request請求去獲取

的html文件,服務(wù)器把Response文件對象發(fā)送回給瀏覽器。(3)瀏覽器分析Response中的HTML,發(fā)現(xiàn)其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。瀏覽器會自動再次發(fā)送Request去獲取圖片,CSS文件,或者JS文件。(4)當(dāng)所有的文件都下載成功后,網(wǎng)頁會根據(jù)HTML語法結(jié)構(gòu),完整的顯示出來了。在運行窗口輸入“CMD”進入仿DOS窗口,然后輸入Mysql–uroot–proot命令進入MYSQL數(shù)據(jù)庫環(huán)境。其中–u后面是用戶名,-p后面是密碼。HTTP協(xié)議1.

HTTP的請求與響應(yīng)URL(Uniform/UniversalResourceLocator的縮寫):統(tǒng)一資源定位符,是用于完整地描述Internet上網(wǎng)頁和其他資源的地址的一種標(biāo)識方法。HTTP協(xié)議2.

URLURL只是標(biāo)識資源的位置,而HTTP是用來提交和獲取資源??蛻舳税l(fā)送一個HTTP請求到服務(wù)器的請求消息,包括格式:請求行、請求頭部、空行、請求數(shù)據(jù)等四個部分組成,下圖給出了請求報文的一般格式。HTTP協(xié)議3.客戶端HTTP請求HTTP響應(yīng)也由四個部分組成,分別是:狀態(tài)行、消息報頭、空行、響應(yīng)正文。響應(yīng)狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別,且有五種可能取值。常見狀態(tài)碼:100~199:表示服務(wù)器成功接收部分請求,要求客戶端繼續(xù)提交其余請求才能完成整個處理過程。200~299:表示服務(wù)器成功接收請求并已完成整個處理過程。常用200(OK請求成功)。300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經(jīng)移動一個新地址、常用302(所請求的頁面已經(jīng)臨時轉(zhuǎn)移至新的url)、307和304(使用緩存資源)。400~499:客戶端的請求有錯誤,常用404(服務(wù)器無法找到被請求的頁面)、403(服務(wù)器拒絕訪問,權(quán)限不夠)。500~599:服務(wù)器端出現(xiàn)錯誤,常用500(請求未完成。服務(wù)器遇到不可預(yù)知的情況)。HTTP協(xié)議4.服務(wù)端HTTP響應(yīng)requests模塊用來獲取目標(biāo)網(wǎng)頁文本,BeautifulSoup模塊用來獲取html中特定標(biāo)簽內(nèi)容,fake_useragent.UserAgent類提供random方法可以隨機生成合法的User-Agent,作為請求頭一部分請求網(wǎng)頁,以避免網(wǎng)頁請求失敗。myMysql是當(dāng)前目錄的一個文件,其中定義一個類。用來二次封裝pymysql開放的操作mysql數(shù)據(jù)庫的接口,實現(xiàn)對數(shù)據(jù)庫的讀寫。HTTP協(xié)議5.項目依賴包爬取與解析網(wǎng)站數(shù)據(jù)1.爬取頁面定義函數(shù)request_douban(),目標(biāo)url作為參數(shù),headers作為請求頭,將自動生成的user_agent添加到headers作為反爬機制。調(diào)用requests類get方法獲取請求url返回的響應(yīng)內(nèi)容,通過response.status_code獲取響應(yīng)代碼,若為200,表示成功響應(yīng),通過response.status_code獲取響應(yīng)的html正文,作為函數(shù)返回值。爬取與解析網(wǎng)站數(shù)據(jù)2.目標(biāo)網(wǎng)頁分析

首先打開我們的目標(biāo)鏈接/top250可以看到如圖所示的網(wǎng)頁爬取與解析網(wǎng)站數(shù)據(jù)2.目標(biāo)網(wǎng)頁分析每一頁顯示了25條數(shù)據(jù),當(dāng)我們點擊下一頁的時候鏈接請求參數(shù)變了,/top250?start=25&filter=,。我們可以明確下一頁就是從第25條數(shù)據(jù)開始加載的。所以,我們可以使用這個start=25來做變量,實現(xiàn)翻頁獲取信息。接下來我們來看下我們要的主要信息:電影名稱、電影排名、電影評分、電影作者、電影簡介。我們可以使用BeautifulSoup超簡單獲取對應(yīng)我們想要獲取的電影信息。主要思路,請求豆瓣的鏈接獲取網(wǎng)頁源代碼,然后使用BeatifulSoup拿到我們要的內(nèi)容,最后就把數(shù)據(jù)存儲到MySQL中。爬取與解析網(wǎng)站數(shù)據(jù)3.BeautifulSoup解析html提取目標(biāo)數(shù)據(jù)

BeautifulSoup是一個能從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能通過自己定義的解析器來提供導(dǎo)航、搜索,甚至改變解析樹。它的出現(xiàn),會大大節(jié)省開發(fā)者的時間。定義函數(shù)getResult(),BeautifulSoup對象作為參數(shù),首先獲取所有類選擇器為“grid_view”的li標(biāo)簽,每個電影對應(yīng)的Tag對象作為列表的元素保存到html變量,定義空列表result用來存儲希望得到的電影信息,包括排名、電影名、評分、簡介等。遍歷html變量,使用BeautifulSoup相關(guān)方法,結(jié)合html分析獲取前述電影信息,即item_index,item_name,item_score,item_intr,將四個包含電影信息的字符串存儲在元組item中,最后將item插入列表result暫時存儲,result最終作為函數(shù)返回值。爬取與解析網(wǎng)站數(shù)據(jù)4.獲取全部頁面數(shù)據(jù)并存儲到數(shù)據(jù)庫

定義onePage()函數(shù),整形page作為參數(shù),當(dāng)變量page=0,url代表首頁,包含top25電影信息,當(dāng)page=1,url代表排名第26到50的電影信息頁面,以此類推。調(diào)用request_douban(url)獲取對應(yīng)頁面html正文,然后html作為參數(shù),實例化BeautifulSoup類生成對象soup,調(diào)用getResult(soup)函數(shù),將一個頁面中包含的25個電影分別對應(yīng)的四個電影信息作為返回值保存到列表result。循環(huán)10次,i取0到9,10個整數(shù),作為變量傳遞到onePage()函數(shù)。最終空列表result存儲了10個頁面共250個電影的電影信息。爬取與解析網(wǎng)站數(shù)據(jù)4.獲取全部頁面數(shù)據(jù)并存儲到數(shù)據(jù)庫定義saveToMysql()函數(shù),列表result作為參數(shù),該函數(shù)實現(xiàn)了250條電影信息保存到數(shù)據(jù)表douban.movie中,DBHelper()是在myMysql文件中自定義的數(shù)據(jù)庫操作類,pyMySQL開放接口execute實現(xiàn)sql語句,開放executemany接口實現(xiàn)多條數(shù)據(jù)插入數(shù)據(jù)表。最終項目主函數(shù),調(diào)用allPage()函數(shù),返回所有電影信息暫存到result列表,調(diào)用saveToMysql()函數(shù)實現(xiàn)電影信息存儲到數(shù)據(jù)庫。項目總結(jié)本項目運用了Http相關(guān)理論知識,結(jié)合requests、BeautifulSoup、fake_useragent

溫馨提示

  • 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

提交評論