




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python網(wǎng)絡爬蟲導言教學概述課程性質描述
《Python網(wǎng)絡爬蟲》是一門基于工作過程開發(fā)出來的學習領域課程,是大數(shù)據(jù)、人工智能相關專業(yè)職業(yè)核心課程。本課程注重對學生職業(yè)能力和創(chuàng)新精神、實踐能力的培養(yǎng),培養(yǎng)學生利用主流爬蟲框架進行爬蟲項目的設計和開發(fā)。是融理論和實踐一體化,教、學、做一體化的專業(yè)課程,是工學結合課程。
適用專業(yè):大數(shù)據(jù)、人工智能相關專業(yè)。開設課時:56建議課時:56導言教學概述典型工作任務描述大數(shù)據(jù)時代,信息的采集是一項重要的工作,如果單純靠人力進行信息采集,不僅低效繁瑣,搜集的成本也會提高,我們可以使用網(wǎng)絡爬蟲對數(shù)據(jù)信息進行自動采集,比如應用于搜索引擎中對站點進行爬取收錄,應用于數(shù)據(jù)分析與挖掘中對數(shù)據(jù)進行采集,應用于金融分析中對金融數(shù)據(jù)進行采集,除此之外,還可以將網(wǎng)絡爬蟲應用于輿情監(jiān)測與分析、目標客戶數(shù)據(jù)的收集等各個領域。我們可以根據(jù)爬取對象的不同設置網(wǎng)絡爬蟲的典型工作任務,包括爬取靜態(tài)網(wǎng)頁、爬取動態(tài)網(wǎng)頁、爬取APP數(shù)據(jù),另外,我們在爬取數(shù)據(jù)過程中會遇到反爬蟲以及爬取效率的困擾,我們將反爬蟲策略及其解決辦法,分布式爬蟲優(yōu)化也作為典型工作任務。導言知識準備課程學習目標導言基本理論方面掌握爬蟲程序設計理念;掌握數(shù)據(jù)提取和存儲思想;掌握Scrapy爬蟲框架設計思想。知識準備課程學習目標導言基本技能方面熟練掌握Requests請求源數(shù)據(jù)的方法;熟練掌握BeautifulSoup4工具解析數(shù)據(jù)的方法;熟練掌握Mechanize模擬瀏覽器的方法;熟練掌握XPath、css解析數(shù)據(jù)的方法;熟練掌握Scrapy網(wǎng)頁爬取的工作流程;熟練掌握Scrapy中Item、Pipeline數(shù)據(jù)的序列化輸出方法;熟練掌握Scrapy中網(wǎng)頁及接口請求方法;熟練掌握Selenium自動化操作方法;熟練掌握Fiddler的使用方法;熟練掌握CSV、MySQL數(shù)據(jù)存儲方法;掌握常見反爬蟲策略的解決辦法;能正確使用Scrapy+Redis進行分布式數(shù)據(jù)采集工作。知識準備課程學習目標導言職業(yè)素養(yǎng)方面能夠完成真實業(yè)務邏輯向代碼的轉化;能夠獨立分析解決問題;能夠快速準確地查找參考資料;能夠與小組其他成員通力合作。知識準備學習組織形式與方法導言親愛的同學,歡迎你學習《Python網(wǎng)絡爬蟲》課程!與你過去使用的傳統(tǒng)教材相比,這是一種全新的學習材料,它幫助你更好地了解未來的工作及其要求,通過這本活頁式教材學習如何通過爬蟲采集網(wǎng)絡數(shù)據(jù)的重要的、典型的工作,促進你的綜合職業(yè)能力發(fā)展,使你有可能在短時間內成為網(wǎng)絡爬蟲的技能能手。主動學習用好工作活頁團隊協(xié)作把握好學習過程和學習資源知識準備學習情境設計導言爬取天氣預報數(shù)據(jù)爬取百度搜索結果數(shù)據(jù)爬取汽車銷售分頁數(shù)據(jù)爬取百度圖片數(shù)據(jù)爬取漫畫數(shù)據(jù)爬取新聞類APP接口數(shù)據(jù)常見反爬蟲策略及解決辦法處理輸入式驗證碼校驗分布式爬取電影數(shù)據(jù)謝謝課程名稱:Python網(wǎng)絡爬蟲Python網(wǎng)絡爬蟲第一單元爬取靜態(tài)網(wǎng)頁教學概述概述在網(wǎng)站設計中,純粹HTML(標準通用標記語言下的一個應用)格式的網(wǎng)頁通常被稱為“靜態(tài)網(wǎng)頁”,靜態(tài)網(wǎng)頁是標準的HTML文件,它的文件擴展名是.htm、.html,可以包含文本、圖像、聲音、FLASH動畫、客戶端腳本和ActiveX控件及JAVA小程序等。靜態(tài)網(wǎng)頁是網(wǎng)站建設的基礎,早期的網(wǎng)站一般都是由靜態(tài)網(wǎng)頁制作的。靜態(tài)網(wǎng)頁是相對于動態(tài)網(wǎng)頁而言,是指沒有后臺數(shù)據(jù)庫、不含程序和不可交互的網(wǎng)頁。靜態(tài)網(wǎng)頁相對更新起來比較麻煩,適用于一般更新較少的展示型網(wǎng)站。靜態(tài)網(wǎng)頁有時也被稱為平面頁。靜態(tài)網(wǎng)頁面通常是超文本標記語言文檔存儲為文件在文件系統(tǒng)里頭,并且可以通過HTTP訪問網(wǎng)絡服務器。第一單元爬取靜態(tài)網(wǎng)頁0203爬取天氣預報數(shù)據(jù)爬取百度搜索爬取汽車銷售分頁數(shù)據(jù)01情境一:爬取天氣預報數(shù)據(jù)01030204情境概述知識準備案例講解總結PART01情境概述情境一:爬取天氣預報數(shù)據(jù)情境概述學習情境描述教學情境描述:通過學習教師講授相關Requests、BeautifulSoup4、CSV技術的應用,學習如何在實際靜態(tài)網(wǎng)頁數(shù)據(jù)采集中應用Requests獲取網(wǎng)頁源數(shù)據(jù);使用BeautifulSoup4根據(jù)網(wǎng)頁源代碼提取目標數(shù)據(jù);使用CSV將程序過程數(shù)據(jù)持久化存儲于本地。這就是一種最簡單的三步靜態(tài)網(wǎng)頁數(shù)據(jù)爬蟲操作步驟和應用。關鍵知識點:爬蟲的原理、HTTP請求原理、Python庫環(huán)境管理、Requests網(wǎng)絡交互、BeautifulSoup4數(shù)據(jù)結構化解析、IO流數(shù)據(jù)處理、CSV文件數(shù)據(jù)操作。關鍵技能點:Python庫環(huán)境安裝、Requests請求源數(shù)據(jù)、BeautifulSoup4數(shù)據(jù)解析、CSV本地文件數(shù)據(jù)存儲。情境一:爬取天氣預報數(shù)據(jù)情境概述本節(jié)課的學習目標正確理解爬蟲的原理。正確掌握Http網(wǎng)絡交互及攜帶信息流程。正確掌握Python模塊庫(Requests、BeautifulSoup4、CSV)安裝管理應用。能根據(jù)實際網(wǎng)頁源,分析網(wǎng)絡爬蟲請求限制。能根據(jù)實際網(wǎng)頁源,使用Requests獲取源代碼數(shù)據(jù)。能根據(jù)HTML源代碼結構,使用BeautifulSoup4獲取對應節(jié)點對象。能使用BeautifulSoup4獲取對應節(jié)點相關屬性及內容數(shù)據(jù)。能使用CSV模塊,存儲程序過程中的數(shù)據(jù)到本地文件。情境一:爬取天氣預報數(shù)據(jù)情境概述本節(jié)課的任務書完成通過PIP命令安裝及管理Requests、BeautifulSoup4、CSV庫。完成通過Requests獲取中國天氣網(wǎng)華北地區(qū)天氣預報網(wǎng)頁源代碼。完成通過BeautifulSoup4解析結構化網(wǎng)頁,并獲取對應城市的各類天氣數(shù)據(jù)。完成通過CSV將解析到的各城市天氣數(shù)據(jù)本地結構化存儲。情境一:爬取天氣預報數(shù)據(jù)PART02知識準備情境一:爬取天氣預報數(shù)據(jù)知識準備引導問題了解什么是網(wǎng)絡爬蟲,說明網(wǎng)絡爬蟲相關原理。了解網(wǎng)絡爬蟲的流程,并理解各流程都有什么意義。網(wǎng)絡爬蟲前我們需要準備什么?如何獲取網(wǎng)頁源代碼?如何解析網(wǎng)頁源數(shù)據(jù)?如何本地化存儲數(shù)據(jù)?情境一:爬取天氣預報數(shù)據(jù)知識準備知識點介紹RequestsBeautifulSoup4CSV情境一:爬取天氣預報數(shù)據(jù)知識準備Requests情境一:爬取天氣預報數(shù)據(jù)Requests框架介紹RequestsisanelegantandsimpleHTTPlibraryforPython,builtforhumanbeings.RequestsallowsyoutosendHTTP/1.1requestsextremelyeasily.There’snoneedtomanuallyaddquerystringstoyourURLs,ortoform-encodeyourPOSTdata.Keep-aliveandHTTPconnectionpoolingare100%automatic,thankstourllib3.Requests是一個基于Apache2協(xié)議開源的PythonHTTP庫,號稱是“為人類準備的HTTP庫”。Requests有如特點:知識準備情境一:爬取天氣預報數(shù)據(jù)Keep-Alive&連接池國際化域名和URL帶持久Cookie的會話瀏覽器式的SSL認證自動內容解碼基本/摘要式的身份認證優(yōu)雅的key/valueCookie自動解壓Unicode響應體HTTP(S)代理支持文件分塊上傳流下載連接超時分塊請求支持.netrc知識準備Requests環(huán)境安裝情境一:爬取天氣預報數(shù)據(jù)pipinstallRequestspiplist在已安裝列表中顯示了requests2.21.0,表明版本為2.21.0的requests庫安裝成功。知識準備Requests使用方法情境一:爬取天氣預報數(shù)據(jù)導入模塊:importrequestsGET請求POST請求r=requests.get("")print(r.status_code)print(r.content)r=requests.post("")print(r.status_code)print(r.content)知識準備情境一:爬取天氣預報數(shù)據(jù)傳遞參數(shù)自定義請求頭指定Cookiesurl=""r=requests.get(url,params={"name":"zhangsan"})print(r.url)url='/'headers={'user-agent':'Mozilla/5.0'}r=requests.get(url=url,headers=headers)url="/cookies"r=requests.get(url,cookies={'myname':'lisi'})print(r.text)知識準備情境一:爬取天氣預報數(shù)據(jù)設置超時設置代理r=requests.get('',timeout=5)proxies={'http':'8:8118','http':':9999'}r=requests.get('',proxies=proxies,timeout=2)知識準備情境一:爬取天氣預報數(shù)據(jù)Session在爬取有些網(wǎng)頁是要求登錄之后的才能爬取,所以要和服務器一直保持登錄狀態(tài),而不用都指定cookies,那么可以使用session來完成,Session提供的API和requests是一樣的s=requests.Session()s.cookies=requests.utils.cookiejar_from_dict({"b":"d"})r=s.get('/cookies')print(r.text)r=s.get('/cookies')print(r.text)知識準備情境一:爬取天氣預報數(shù)據(jù)Response當我們使用GET、POST或其他方式發(fā)起網(wǎng)絡請求后,就可以獲得一個Response對象,我們可以從這個對象中獲取所有我們想要的信息。實際請求的URL:r.url推測的文本編碼:r.encoding二進制相應內容:r.contentJSON相應內容:r.json()原始相應內容:r.raw響應狀態(tài)碼:r.status_code響應頭:r.headersCookie:r.cookies響應歷史:r.history知識準備BeautifulSoup4情境一:爬取天氣預報數(shù)據(jù)BeautifulSoup4框架介紹BeautifulSoupisaPythonlibraryforpullingdataoutofHTMLandXMLfiles.Itworkswithyourfavoriteparsertoprovideidiomaticwaysofnavigating,searching,andmodifyingtheparsetree.Itcommonlysavesprogrammershoursordaysofwork.BeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它能夠通過你喜歡的轉換器實現(xiàn)慣用的文檔導航,查找,修改文檔的方式.BeautifulSoup會幫你節(jié)省數(shù)小時甚至數(shù)天的工作時間。BeautifulSoup是一個HTML/XML的解析器,主要的功能是解析和提取HTML/XML數(shù)據(jù)。BeautifulSoup支持Python標準庫中的HTML解析器,還支持一些第三方的解析器。通常情況下我們不會使用Python默認的解析器,而是使用lxml解析器,lxml解析器更加強大,速度更快,推薦使用lxml解析器。知識準備BeautifulSoup4環(huán)境安裝情境一:爬取天氣預報數(shù)據(jù)pipinstallBeautifulSoup4piplist在已安裝列表中顯示了beautifulsoup44.7.1,表明版本為4.7.1的beautifulsoup4庫安裝成功。知識準備BeautifulSoup4使用方法情境一:爬取天氣預報數(shù)據(jù)獲取soup對象html.parserlxmlxmlhtml5lib格式化輸出prettify()獲取節(jié)點BS4對象soup.標簽名find()系列方法select()方法知識準備CSV情境一:爬取天氣預報數(shù)據(jù)數(shù)據(jù)結構介紹CSV:Comma-SeparatedValues,也稱為:逗號分隔值。其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個字符序列,不含必須像二進制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以指定換行符分隔,默認換行符為“\r\n”;每條記錄由字段組成,字段間以指定分隔符分割,默認分隔符是逗號,最常見的是逗號或制表符。通常,CSV所有記錄都有完全相同的字段序列,即有公共的數(shù)據(jù)結構。通常都是純文本文件。常用打開方式為記事本或Excel。本身并不存在通用標準,也不受存儲樣式限制。知識準備CSV模塊安裝情境一:爬取天氣預報數(shù)據(jù)Python內置模塊,無需額外安裝進入Python交互環(huán)境,importcsv驗證知識準備數(shù)據(jù)存儲操作情境一:爬取天氣預報數(shù)據(jù)csv模塊實現(xiàn)用于以CSV格式讀取和寫入表格數(shù)據(jù)的類。csv模塊的reader和writer對象讀取和寫入序列。程序員還可以使用DictReader和DictWriter類以字典形式讀取和寫入數(shù)據(jù)。csv.reader 返回一個遍歷CSV文件各行的讀取器對象csv.writer 返回將數(shù)據(jù)寫入CSV文件的寫入器對象csv.register_dialect 注冊CSV方言csv.unregister_dialect 注銷CSV方言csv.get_dialect 返回具有給定名稱的方言csv.list_dialects 返回所有已注冊的方言csv.field_size_limit 返回解析器允許的當前最大字段大小PART03案例講解情境一:爬取天氣預報數(shù)據(jù)案例講解爬取天氣預報數(shù)據(jù)情境一:爬取天氣預報數(shù)據(jù)實例:“中國天氣網(wǎng)”地區(qū)天氣預報頁面。案例講解爬取天氣預報數(shù)據(jù)情境一:爬取天氣預報數(shù)據(jù)步驟:確定數(shù)據(jù)源確定目標數(shù)據(jù)安裝環(huán)境構建項目編寫網(wǎng)頁爬蟲程序編寫網(wǎng)頁解析程序編寫數(shù)據(jù)存儲程序運行程序效果截圖案例講解爬取天氣預報數(shù)據(jù)情境一:爬取天氣預報數(shù)據(jù)具體實操跟隨教材內的步驟實施。PART04總結情境一:爬取天氣預報數(shù)據(jù)總結總結情境一:爬取天氣預報數(shù)據(jù)本情景,主要介紹了Requests、BeautifulSoup4、CSV的知識,通過對案例的學習,讓同學們掌握Requests、BeautifulSoup4、CSV的運用。情境二:爬取百度搜索結果數(shù)據(jù)01030204情境概述知識準備案例講解總結PART01情境概述情境二:爬取百度搜索結果數(shù)據(jù)情境概述學習情境描述教學情境描述:通過學習教師講授相關Mechanize、BeautifulSoup4、CSV技術的應用,學習如何使用Mechanize模擬瀏覽器操作進行網(wǎng)頁操作,并根據(jù)網(wǎng)頁結構反饋和用戶行為操作獲取相關網(wǎng)頁源數(shù)據(jù);使用BeautifulSoup4根據(jù)網(wǎng)頁源代碼提取目標數(shù)據(jù);使用CSV將程序過程數(shù)據(jù)持久化存儲于本地。關鍵知識點:Mechanize環(huán)境管理、Mechanize框架理解、Mechanize模擬瀏覽器、Mechanize模擬用戶操作、Urllib2框架理解、BeautifulSoup4數(shù)據(jù)結構化解析、IO流數(shù)據(jù)處理、CSV文件數(shù)據(jù)操作。關鍵技能點:Mechanize環(huán)境管理、Mechanize模擬瀏覽器、Mechanize模擬用戶操作、BeautifulSoup4數(shù)據(jù)解析、CSV本地文件數(shù)據(jù)存儲。情境二:爬取百度搜索結果數(shù)據(jù)情境概述本節(jié)課的學習目標正確理解網(wǎng)頁交互的原理。正確掌握Http網(wǎng)絡交互及攜帶信息。正確掌握Python模塊庫(Mechanize、BeautifulSoup4、CSV)安裝管理應用。能使用Mechanize模擬瀏覽器發(fā)起HTTP請求訪問。能使用Mechanize模擬用戶行為操作并獲取網(wǎng)頁源數(shù)據(jù)。能根據(jù)HTML源代碼結構,使用BeautifulSoup4獲取對應節(jié)點對象。能使用BeautifulSoup4獲取對應節(jié)點相關屬性及內容數(shù)據(jù)。能使用CSV模塊,存儲程序過程中的數(shù)據(jù)到本地文件。情境二:爬取百度搜索結果數(shù)據(jù)情境概述本節(jié)課的任務書完成通過PIP命令安裝及管理Mechanize、BeautifulSoup4、CSV庫。完成通過Mechanize模擬瀏覽器訪問百度資訊搜索首頁,并模擬用戶搜索行為,獲取百度資訊搜索結果網(wǎng)頁源代碼。完成通過BeautifulSoup4結構化網(wǎng)頁,并獲取對應搜索結果數(shù)據(jù)。完成通過CSV將解析到的搜索結果數(shù)據(jù)本地結構化存儲。情境二:爬取百度搜索結果數(shù)據(jù)PART02知識準備情境二:爬取百度搜索結果數(shù)據(jù)知識準備引導問題了解什么是模擬瀏覽器操作,說明模擬瀏覽器操作相關原理。了解瀏覽器操作都有哪些,并理解各操作都有什么意義。模擬瀏覽器操作,我們需要準備什么?如何獲取源數(shù)據(jù)?如何解析網(wǎng)頁源數(shù)據(jù)?如何本地化存儲數(shù)據(jù)?情境二:爬取百度搜索結果數(shù)據(jù)知識準備知識點介紹Mechanize情境二:爬取百度搜索結果數(shù)據(jù)知識準備Mechanize情境二:爬取百度搜索結果數(shù)據(jù)Mechanize框架介紹StatefulprogrammaticwebbrowsinginPython.BrowsepagesprogrammaticallywitheasyHTMLformfillingandclickingoflinks.TheMechanizelibraryisusedforautomatinginteractionwithwebsites.Mechanizeautomaticallystoresandsendscookies,followsredirects,andcanfollowlinksandsubmitforms.Formfieldscanbepopulatedandsubmitted.Mechanizealsokeepstrackofthesitesthatyouhavevisitedasahistory.Python中有狀態(tài)的可編程Web瀏覽。使用簡單的HTML表單填充和單擊鏈接以編程方式瀏覽頁面。Mechanize是對Urllib2的部分功能的替換,能夠更好的模擬瀏覽器行為,在Web訪問控制方面做得更全面。它對protocol,cookie,redirection都做了比較好的支持,再結合BeautifulSoup和re模塊,可以非常有效的解析web頁面。知識準備Mechanize環(huán)境安裝情境二:爬取百度搜索結果數(shù)據(jù)pipinstallmechanizepiplist在已安裝列表中顯示了mechanize0.4.5,表明版本為0.4.5的mechanize庫安裝成功。知識準備Mechanize使用方法情境二:爬取百度搜索結果數(shù)據(jù)導入模塊:importmechanize瀏覽器對象(Browser)classmechanize.Browser(history=None,
request_class=None,
content_parser=None,
factory_class=<classmechanize._html.Factory>,
allow_xhtml=False)history:對象實現(xiàn)mechanize.History接口。注意,這個接口仍然是實驗性的,將來可能會改變。此對象歸瀏覽器實例所有,不能在瀏覽器之間共享。request_class:請求類使用。默認為mechanize.Requestcontent_parser:負責解析接收到的HTML/XHTML內容的函數(shù)??茨禽v車mechanize._html.content_parser()函數(shù)獲取有關此函數(shù)必須支持的接口的詳細信息。factory_class:要使用的HTML工廠類。默認為mechanize.Factory知識準備情境二:爬取百度搜索結果數(shù)據(jù)請求對象(Request)classmechanize.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,visit=None,timeout=<objectobject>,method=None)url:請求的URL地址。data:與此請求一起發(fā)送的數(shù)據(jù)??梢允菍⒈痪幋a并作為application/x-www-form-urlencoded數(shù)據(jù)發(fā)送的字典,也可以是將按原樣發(fā)送的bytestring。如果使用bytestring,還應該適當?shù)卦O置content-type頭。headers:要與此請求一起發(fā)送的郵件頭。method:用于HTTP請求的方法。如果未指定,mechanize將根據(jù)需要選擇“自動獲取”或“自動發(fā)布”。timeout:超時(秒)知識準備情境二:爬取百度搜索結果數(shù)據(jù)響應對象(HTTPResponse)mechanize中的響應對象是seek()能夠的file-類似于支持一些附加方法的對象,這取決于用于連接的協(xié)議。classmechanize._mechanize.HTTPResponse響應對象HTTPResponse是網(wǎng)絡請求的響應數(shù)據(jù)封裝對象,可通過此對象對響應內容進行提取,比如獲取網(wǎng)頁請求狀態(tài)、網(wǎng)頁源代碼等等。HTTPResponse對象所具有的API函數(shù)和屬性詳見教案。知識準備情境二:爬取百度搜索結果數(shù)據(jù)鏈接(Link)與歷史記錄(History)HTML文檔中的鏈接:classmechanize.Link(base_url,url,text,tag,attrs)瀏覽器訪問歷史記錄:classmechanize.HistoryHTML表單APIHTMLForm:classmechanize.HTMLForm(action,method='GET',enctype='application/x-www-form-urlencoded',name=None,attrs=None,request_class=<class'mechanize._request.Request'>,forms=None,labels=None,id_to_labels=None,encoding=None)Control:classmechanize.Control(type,name,attrs,index=None)PART03案例講解情境二:爬取百度搜索結果數(shù)據(jù)案例講解爬取百度搜索結果數(shù)據(jù)情境二:爬取百度搜索結果數(shù)據(jù)案例講解爬取百度搜索結果數(shù)據(jù)情境二:爬取百度搜索結果數(shù)據(jù)步驟:確定數(shù)據(jù)源確定目標數(shù)據(jù)安裝環(huán)境構建項目編寫網(wǎng)頁爬蟲程序編寫網(wǎng)頁解析程序編寫數(shù)據(jù)存儲程序運行程序效果截圖案例講解爬取天氣預報數(shù)據(jù)情境二:爬取百度搜索結果數(shù)據(jù)具體實操跟隨教材內的步驟實施。情境三:爬取汽車銷售分頁數(shù)據(jù)01030204情境概述知識準備案例講解總結PART01情境概述情境三:爬取汽車銷售分頁數(shù)據(jù)情境概述學習情境描述教學情境描述:通過學習教師講授相關Scrapy、XPath、MySQL技術的應用,學習如何在實際靜態(tài)網(wǎng)頁數(shù)據(jù)采集中應用Scrapy直接/級聯(lián)獲取單條/批量網(wǎng)頁源數(shù)據(jù);使用XPath規(guī)則匹配網(wǎng)頁節(jié)點提取目標數(shù)據(jù);使用PyMySQL存儲過程結構化數(shù)據(jù)于本地MySQL數(shù)據(jù)庫中。這是比Requests網(wǎng)絡爬蟲更為復雜且完善的數(shù)據(jù)采集框架應用與場景實施。關鍵知識點:Python庫環(huán)境管理、Scrapy框架理解、Scrapy框架原理、Twisted異步網(wǎng)絡請求、XPath結構化文檔解析、MySQL數(shù)據(jù)庫操作、PyMySQL結構化存儲等。關鍵技能點:Python庫環(huán)境安裝、Scrapy網(wǎng)絡請求、Twisted異步網(wǎng)絡、XPath文檔解析、MySQL結構化數(shù)據(jù)存儲。情境三:爬取汽車銷售分頁數(shù)據(jù)情境概述本節(jié)課的學習目標正確理解Scrapy框架體系。正確理解Twisted異步網(wǎng)絡請求原理。正確理解Scrapy網(wǎng)絡爬蟲框架及原理。掌握Scrapy項目系統(tǒng)配置及爬蟲策略配置。正確掌握Python模塊庫(Scrapy、Twisted、lxml、PyMySQL等)安裝管理應用。能根據(jù)實際網(wǎng)頁源,分析網(wǎng)絡爬蟲請求限制。能正確使用Scrapy進行多層級數(shù)據(jù)采集工作。能正確使用XPath規(guī)范格式化文檔并獲取目標數(shù)據(jù)。能正確使用PyMySQL完成MySQL結構化數(shù)據(jù)存儲。情境三:爬取汽車銷售分頁數(shù)據(jù)情境概述本節(jié)課的任務書完成通過PIP命令安裝及管理Scrapy、Twisted、lxml、PyMySQL庫。完成通過Scrappy獲取列表數(shù)據(jù)、分頁數(shù)據(jù)及多層級的汽車銷售數(shù)據(jù)網(wǎng)頁源代碼。完成通過XPath格式化網(wǎng)頁源文檔,并獲取對應類型的汽車銷售數(shù)據(jù)。完成通過Pymysql將解析到的各車型銷售數(shù)據(jù)結構化存儲于本地MySQL中。情境三:爬取汽車銷售分頁數(shù)據(jù)PART02知識準備情境三:爬取汽車銷售分頁數(shù)據(jù)知識準備引導問題了解什么是異步網(wǎng)絡爬蟲,說明異步網(wǎng)絡爬蟲相關原理。了解Scrapy是什么框架技術,并理解其優(yōu)勢。Scrapy框架體系結構及原理是什么?Scrapy如何獲取網(wǎng)頁源代碼?XPath如何解析網(wǎng)頁源數(shù)據(jù)?如何本地MySQL結構化存儲數(shù)據(jù)?情境三:爬取汽車銷售分頁數(shù)據(jù)知識準備知識點介紹ScrapyXPathPyMySQL情境三:爬取汽車銷售分頁數(shù)據(jù)知識準備Scrapy情境三:爬取汽車銷售分頁數(shù)據(jù)Scrapy框架介紹Scrapy是一種快速的高級webcrawling和webscraping框架,用于對網(wǎng)站進行爬網(wǎng)并從其頁面提取結構化數(shù)據(jù)。它可以用于廣泛的用途,從數(shù)據(jù)挖掘到監(jiān)控和自動化測試。Scrapy是一個應用程序框架,用于對網(wǎng)站進行爬行和提取結構化數(shù)據(jù),這些結構化數(shù)據(jù)可用于各種有用的應用程序,如數(shù)據(jù)挖掘、信息處理或歷史存檔。盡管Scrapy最初是為webscraping它還可以用于使用API提取數(shù)據(jù)(例如AmazonAssociatesWebServices)或者作為一個通用的網(wǎng)絡爬蟲。知識準備Scrapy架構情境三:爬取汽車銷售分頁數(shù)據(jù)知識準備Scrapy架構情境三:爬取汽車銷售分頁數(shù)據(jù)引擎(ScrapyEngine)調度器(Scheduler)下載器(Downloader)爬蟲(Spiders)項目管道(ItemPipeline)下載器中間件(DownloaderMiddlewares)爬蟲中間件(SpiderMiddlewares)調度中間件(SchedulerMiddewares)知識準備Scrapy運行流程情境三:爬取汽車銷售分頁數(shù)據(jù)知識準備Scrapy環(huán)境安裝情境二:爬取百度搜索結果數(shù)據(jù)pipinstallScrapypiplist在已安裝列表中顯示了Scrapy2.3.0(具體版本以當前實際為準),表明版本為2.3.0的Scrapy庫安裝成功。知識準備Scrapy內置命令情境二:爬取百度搜索結果數(shù)據(jù)$scrapystartproject<project_name>[project_dir]$scrapygenspider[-ttemplate]<name><domain>$scrapysettings[options]$scrapyrunspider<spider_file.py>$scrapyshell[url]$crapyfetch<url>$scrapyview<url>$scrapyversion[-v]$scrapycrawl<spider>$scrapycheck[-l]<spider>其余命令參見教案知識準備Scrapy快速應用案例情境二:爬取百度搜索結果數(shù)據(jù)創(chuàng)建新的Scrapy項目構建Spider爬蟲程序,對網(wǎng)站進行爬網(wǎng)并提取數(shù)據(jù)運行爬蟲程序知識準備XPath情境三:爬取汽車銷售分頁數(shù)據(jù)XPath框架介紹XPath是一門在XML文檔中查找信息的語言。XPath可用來在XML文檔中對元素和屬性進行遍歷。XPath是W3CXSLT標準的主要元素,并且XQuery和XPointer都構建于XPath表達之上。因此,對XPath的理解是很多高級XML應用的基礎。XPath基于XML的樹狀結構,提供在數(shù)據(jù)結構樹中找尋節(jié)點的能力。知識準備XPath環(huán)境安裝情境二:爬取百度搜索結果數(shù)據(jù)XPath是一種語法,它從屬于框架lxml,用于解析HTML網(wǎng)頁結構和內容解析。關于lxml框架的安裝和驗證在安裝Scrapy框架的過程中已操作過,所以在本小節(jié)中不再贅述。知識準備XPath使用方法情境二:爬取百度搜索結果數(shù)據(jù)獲取lxml.html對象Html與XPath對象互相轉換XPath()選取節(jié)點謂語(Predicates)通配符獲取內容和屬性值知識準備PyMySQL情境三:爬取汽車銷售分頁數(shù)據(jù)PyMySQL模塊安裝pipinstallPyMySQLpiplist在已安裝列表中顯示了PyMySQL0.9.3,表明版本為0.9.3的PyMySQL庫安裝成功。知識準備PyMySQL使用方法情境二:爬取百度搜索結果數(shù)據(jù)pymysql.connections.ConnectionAPI詳情參見教案pymysql.cursors.CursorAPI詳情參見教案PART03案例講解情境三:爬取汽車銷售分頁數(shù)據(jù)案例講解爬取汽車銷售分頁數(shù)據(jù)情境三:爬取汽車銷售分頁數(shù)據(jù)實例:“購車網(wǎng)”SUV銷量排行榜頁面。案例講解爬取汽車銷售分頁數(shù)據(jù)情境三:爬取汽車銷售分頁數(shù)據(jù)步驟:確定數(shù)據(jù)源確定目標數(shù)據(jù)安裝環(huán)境構建項目編寫數(shù)據(jù)采集程序編寫數(shù)據(jù)存儲程序運行程序效果截圖案例講解爬取汽車銷售分頁數(shù)據(jù)情境三:爬取汽車銷售分頁數(shù)據(jù)具體實操跟隨教材內的步驟實施。PART04總結情境三:爬取汽車銷售分頁數(shù)據(jù)總結總結情境三:爬取汽車銷售分頁數(shù)據(jù)本情景,主要介紹了Scrapy、XPath、PyMySQL的知識,通過對案例的學習,讓同學們掌握Scrapy、XPath、PyMySQL的運用。謝謝課程名稱:Python網(wǎng)絡爬蟲Python網(wǎng)絡爬蟲第二單元爬取動態(tài)網(wǎng)頁教學概述概述動態(tài)網(wǎng)頁,是指跟靜態(tài)網(wǎng)頁相對的一種網(wǎng)頁編程技術。靜態(tài)網(wǎng)頁,隨著html代碼的生成,頁面的內容和顯示效果就基本上不會發(fā)生變化了(除非修改頁面代碼)。而動態(tài)網(wǎng)頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環(huán)境或者數(shù)據(jù)庫操作的結果而發(fā)生改變的。
動態(tài)網(wǎng)頁是基本的html語法規(guī)范與Java、VB、VC等高級程序設計語言、數(shù)據(jù)庫編程等多種技術的融合,以期實現(xiàn)對網(wǎng)站內容和風格的高效、動態(tài)和交互式的管理。因此,從這個意義上來講,凡是結合了HTML以外的高級程序設計語言和數(shù)據(jù)庫技術進行的網(wǎng)頁編程技術生成的網(wǎng)頁都是動態(tài)網(wǎng)頁。第二單元爬取動態(tài)網(wǎng)頁02爬取百度圖片數(shù)據(jù)爬取漫畫數(shù)據(jù)01情境一:爬取百度圖片數(shù)據(jù)01030204情境概述知識準備案例講解總結PART01情境概述情境一:爬取百度圖片數(shù)據(jù)情境概述學習情境描述教學情境描述:通過對Scrapy、JSON、MySQL知識點的學習,對技術綜合應用的操作,學習并掌握如何去區(qū)分靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁交互、去分析動態(tài)網(wǎng)頁實際數(shù)據(jù)來源、去獲取動態(tài)網(wǎng)頁交互數(shù)據(jù),最終達到:使用Scrapy獲取動態(tài)數(shù)據(jù)源;使用JSON解析動態(tài)數(shù)據(jù);使用PyMySQL存儲動態(tài)結構化數(shù)據(jù)MySQL數(shù)據(jù)庫。關鍵知識點:Python庫環(huán)境管理;Scrapy網(wǎng)絡交互;JSON數(shù)據(jù)格式;JSON數(shù)據(jù)解析;PyMySQL結構化存儲。關鍵技能點:Scrapy網(wǎng)頁及接口請求;JSON數(shù)據(jù)解析;MySQL結構化數(shù)據(jù)存儲。情境一:爬取百度圖片數(shù)據(jù)情境概述本節(jié)課的學習目標掌握Python模塊庫(Scrapy、JSON、PyMySQL等)安裝管理應用。能區(qū)分靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁。能根據(jù)實際情況,定位動態(tài)數(shù)據(jù)來源。理解Scrapy框架體系。理解Scrapy網(wǎng)絡爬蟲框架及原理。掌握Scrapy項目系統(tǒng)配置及爬蟲策略配置。能使用Scrapy進行網(wǎng)頁和接口數(shù)據(jù)采集工作。能使用JSON解析動態(tài)數(shù)據(jù)源。能使用PyMySQL完成MySQL結構化數(shù)據(jù)存儲。情境一:爬取百度圖片數(shù)據(jù)情境概述本節(jié)課的任務書完成通過PIP命令安裝及管理Scrapy、JSON、PyMySQL庫。完成通過Scrappy獲取列表數(shù)據(jù)、分頁數(shù)據(jù)及多層級的汽車銷售數(shù)據(jù)網(wǎng)頁源代碼。完成通過XPath格式化網(wǎng)頁源文檔,并獲取對應類型的汽車銷售數(shù)據(jù)。完成通過Pymysql將解析到的各車型銷售數(shù)據(jù)結構化存儲于本地MySQL中。情境一:爬取百度圖片數(shù)據(jù)PART02知識準備情境一:爬取百度圖片數(shù)據(jù)知識準備引導問題了解什么是動態(tài)網(wǎng)頁,和靜態(tài)網(wǎng)頁有什么不同。如何定位動態(tài)網(wǎng)頁數(shù)據(jù)源?如何獲取動態(tài)網(wǎng)頁數(shù)據(jù)源?動態(tài)網(wǎng)頁數(shù)據(jù)是以什么樣的格式或結構展現(xiàn)?如何解析動態(tài)網(wǎng)頁數(shù)據(jù)?如何將動態(tài)數(shù)據(jù)在MySQL結構化存儲?情境一:爬取百度圖片數(shù)據(jù)知識準備知識點介紹ScrapyJSONPyMySQL情境一:爬取百度圖片數(shù)據(jù)知識準備JSON情境一:爬取百度圖片數(shù)據(jù)JSON介紹JSON(JavaScript
ObjectNotation,JS對象簡譜)是一種輕量級的數(shù)據(jù)交換格式。它基于ECMAScript(歐洲計算機協(xié)會制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結構使得JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡傳輸效率。JSON是DouglasCrockford在2001年開始推廣使用的數(shù)據(jù)格式,在2005年-2006年正式成為主流的數(shù)據(jù)格式。JSON是存儲和交換文本信息的語法,類似XML。JSON比XML更小、更快,更易解析。知識準備
JSON語法規(guī)則情境一:爬取百度圖片數(shù)據(jù)JSON使用
JavaScript
語法來描述數(shù)據(jù)對象,但是JSON仍然獨立于語言和平臺。JSON語法是JavaScript語法的子集,包括以下內容:數(shù)據(jù)在名稱/值對中數(shù)據(jù)由逗號分隔花括號保存對象方括號保存數(shù)組JSON支持以下數(shù)據(jù)結構:名/值對集合:這一數(shù)據(jù)結構由不同的鍵值對組成。無序的對象結構:多個名稱/值構成的封裝體,類似字典表。有序的值列表:包括數(shù)組,列表,向量或序列等等。知識準備
情境一:爬取百度圖片數(shù)據(jù)JSON名稱/值對JSON數(shù)據(jù)的書寫格式是:名稱/值對。名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值。語法如下所示:其中value所對應的值可以是:數(shù)字、字符串、邏輯值、數(shù)組、對象、null。具體描述如下:"name":value知識準備
情境一:爬取百度圖片數(shù)據(jù)JSON對象JSON對象使用在大括號({})中書寫,對象可以包含多個
key/value(鍵/值)對。其中:key必須是字符串,value可以是合法的JSON數(shù)據(jù)類型(字符串,數(shù)字,對象,數(shù)組,布爾值或null)。key和value中使用冒號(:)分割。每個key/value對使用逗號(,)分割。
數(shù)據(jù)結構如下:{"鍵名1":值1,"鍵名2":值2,……"鍵名n":值n}知識準備
情境一:爬取百度圖片數(shù)據(jù)JSON數(shù)組JSON數(shù)組結構是用中括號“[]”括起來,中括號內部由0個或多個以英文逗號“,”分隔的值列表組成。數(shù)據(jù)結構如下:[{"鍵名1":值1,"鍵名2":值2},{"鍵名3":值3,"鍵名4":值4},……]知識準備
Python中使用JSON情境一:爬取百度圖片數(shù)據(jù)
在Python中要操作JSON數(shù)據(jù)對象,需要使用json模塊。
JSON模塊為Python內置模塊,在環(huán)境安裝時已自動安裝上,所以可以直接使用框架庫,無需額外安裝。
在json模塊中,主要是對Python數(shù)據(jù)的編碼和解碼,分別對應函數(shù):dumps()、loads()。知識準備
情境一:爬取百度圖片數(shù)據(jù)dumps()json.dumps():對數(shù)據(jù)進行編碼,將Python對象編碼成JSON字符串。語法如下:Python對象轉換為JSON數(shù)據(jù)會有類型轉化,類型對照表如下:json.dumps(obj,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,encoding="utf-8",default=None,sort_keys=False,**kw)知識準備
情境一:爬取百度圖片數(shù)據(jù)loads()json.loads():對數(shù)據(jù)進行解碼,將JSON字符串解碼成Python對象。語法如下:JSON數(shù)據(jù)轉換為Python對象會有類型轉化,類型對照表如下:json.loads(s[,encoding[,cls[,object_hook[,parse_float[,parse_int[,parse_constant[,object_pairs_hook[,**kw]]]]]]]])PART03案例講解情境一:爬取百度圖片數(shù)據(jù)案例講解爬取百度圖片數(shù)據(jù)情境一:爬取百度圖片數(shù)據(jù)步驟:確定目標網(wǎng)頁分析并確定目標數(shù)據(jù)安裝環(huán)境構建項目編寫數(shù)據(jù)采集程序編寫數(shù)據(jù)存儲程序運行程序效果截圖案例講解爬取百度圖片數(shù)據(jù)情境一:爬取百度圖片數(shù)據(jù)具體實操跟隨教材內的步驟實施。PART04總結情境一:爬取百度圖片數(shù)據(jù)總結總結情境一:爬取百度圖片數(shù)據(jù)
本情景,主要介紹了Scrapy、JSON、PyMySQL的相關知識,通過對案例的學習,讓同學們掌握
Scrapy、JSON、PyMySQL
的運用。情境二:爬取漫畫數(shù)據(jù)01030204情境概述知識準備案例講解總結PART01情境概述情境二:爬取漫畫數(shù)據(jù)情境概述學習情境描述教學情境描述:通過對Selenium、PhantomJS、threading、Pillow知識點的學習,對技術綜合應用的操作,學習并掌握如何去區(qū)分靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁交互、去分析動態(tài)網(wǎng)頁實際數(shù)據(jù)來源、去模擬瀏覽器訪問網(wǎng)頁、模擬用戶操作瀏覽器、去獲取動態(tài)網(wǎng)頁交互數(shù)據(jù)。達到本次最終目的:使用Selenium模擬瀏覽器與用戶行為操作、使用PhantomJS提供無界面瀏覽器支持與滾動截屏支持、使用threading構建多線程數(shù)據(jù)采集、使用Pillow裁剪處理并保存目標圖片。關鍵知識點:Python庫環(huán)境管理;PhantomJS軟件安裝與配置;Selenium框架理解;Selenium原理;Selenium自動化操作;threading多線程構建與管理;Pillow圖片裁剪與存儲。關鍵技能點:PhantomJS軟件安裝與配置;Selenium自動化操作;threading多線程構建與管理;Pillow圖片裁剪與存儲。情境二:爬取漫畫數(shù)據(jù)情境概述本節(jié)課的學習目標掌握Python模塊庫(Selenium、threading、Pillow等)安裝管理應用。掌握PhantomJS軟件安裝與配置。能區(qū)分靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁。能根據(jù)實際情況,定位動態(tài)數(shù)據(jù)來源。理解Selenium自動化框架及原理。掌握Selenium運行環(huán)境和項目配置。能使用Selenium模擬瀏覽器操作和用戶行為操作。能使用threading構建和管理多線程爬蟲任務。能使用Pillow對圖片進行裁剪和存儲。情境二:爬取漫畫數(shù)據(jù)情境概述本節(jié)課的任務書完成通過PIP命令安裝及管理Selenium、threading、Pillow庫。完成通過Selenium模擬瀏覽器請求,模擬用戶行為操作,獲取動漫作品的章節(jié)列表及章節(jié)漫畫圖片原型。完成通過threading構建和管理多線程爬蟲任務。完成通過Pillow的相關模塊完成對圖片進行裁剪和存儲操作。情境二:爬取漫畫數(shù)據(jù)PART02知識準備情境二:爬取漫畫數(shù)據(jù)知識準備引導問題網(wǎng)頁中列表數(shù)據(jù)和圖片加載方式有幾種?分別是如何加載的,動態(tài)加載和靜態(tài)加載的區(qū)別。如何定位動態(tài)網(wǎng)頁列表數(shù)據(jù)源和圖片數(shù)據(jù)源?除了Requests或Scrapy直接請求地址的方式,還可以通過哪些方式獲取動態(tài)網(wǎng)頁數(shù)據(jù)和圖片數(shù)據(jù)?如何通過Selenium獲取動態(tài)加載的網(wǎng)頁圖片?如何通過Selenium技術實現(xiàn)網(wǎng)頁截屏?如何將圖片進行裁剪并本地化存儲?情境二:爬取漫畫數(shù)據(jù)知識準備知識點介紹PhantomJSSeleniumthreadingPillow情境二:爬取漫畫數(shù)據(jù)知識準備PhantomJS情境二:爬取漫畫數(shù)據(jù)PhantomJS介紹PhantomJS是一個無界面的、可腳本編程的WebKit瀏覽器引擎。它可以在Windows、macOS、Linux和FreeBSD系統(tǒng)上運行。使用QtWebKit作為后端,它為各種Web標準提供快速和本地支持:DOM處理、CSS選擇器、JSON、畫布和SVG。PhantomJS有如下特點:PhantomJS是一個基于webkit內核、無界面的瀏覽器,即它就是一個瀏覽器,只是其內的點擊、翻頁等人為相關操作需要程序設計實現(xiàn);PhantomJS提供JavascriptAPI接口,可以通過編寫JS程序直接與webkit內核交互;PhantomJS的應用:無需瀏覽器的Web測試、網(wǎng)頁截屏、頁面訪問自動化、網(wǎng)絡監(jiān)測。知識準備
PhantomJS安裝與配置情境二:爬取漫畫數(shù)據(jù)下載軟件PhantomJS是一款無頭瀏覽器,是一款軟件。官網(wǎng)下載地址:
下載phantomjs-2.1.1-windows.zip后解壓到本地文件夾即可。環(huán)境配置定位到phantomjs.exe所在地址,此處演示地址為:C:\Software\phantomjs-2.1.1-windows\bin,將其添加在系統(tǒng)環(huán)境變量中。/download.html知識準備
情境二:爬取漫畫數(shù)據(jù)驗證安裝使用快捷鍵打開CMD命令窗口,輸入查看PhantomJS的版本。如圖:知識準備
PhantomJS運行腳本情境二:爬取漫畫數(shù)據(jù)PhantomJS是一款無頭瀏覽器,也可以使用PhantomJS命令行工具運行JS腳本。PhantomJS運行腳本案例如圖:知識準備Selenium情境二:爬取漫畫數(shù)據(jù)Selenium框架介紹Selenium是支持web瀏覽器自動化的一系列工具和庫的綜合項目。它提供了擴展來模擬用戶與瀏覽器的交互,用于擴展瀏覽器分配的分發(fā)服務器,以及用于實現(xiàn)
W3CWebDriver規(guī)范的基礎結構,該規(guī)范允許您為所有主要Web瀏覽器編寫可互換的代碼。Selenium的核心是
WebDriver,這是一個編寫指令集的接口,可以在許多瀏覽器中互換運行。知識準備
Selenium搭建情境二:爬取漫畫數(shù)據(jù)安裝Selenium
可以使用PIP安裝Python的Selenium庫。語法如下:驗證安裝可以使用PIP驗證Selenium庫的安裝成果。語法如下:pipinstallSeleniumpiplist知識準備
情境二:爬取漫畫數(shù)據(jù)下載WebDriver二進制文件通過WebDriver,Selenium支持市面上所有主流的瀏覽器,如Chrom(ium)、Firefox、InternetExplorer、Opera和Safari。盡管并非所有瀏覽器都對遠程控制提供官方支持,但WebDriver盡可能使用瀏覽器的內置自動化支持來驅動瀏覽器。常見瀏覽器及其對應的WebDriver二進制文件下載地址:知識準備
情境二:爬取漫畫數(shù)據(jù)配置二進制文件環(huán)境通過將包含WebDriver二進制文件的文件夾添加到系統(tǒng)path環(huán)境變量中,Selenium將能夠找到其他二進制文件,而無需您的測試代碼來定位驅動程序的確切位置。如圖:驗證Path打開命令行窗口,輸入WebDriver名稱,查看驅動程序啟動的輸出,如圖:知識準備
WebDriver通信介紹情境二:爬取漫畫數(shù)據(jù)WebDriver通過一個驅動程序與瀏覽器對話。通信基本方式是:直接通信,WebDriver通過驅動程序向瀏覽器傳遞命令,然后通過相同的路徑接收信息。結構如圖:知識準備
Selenium應用情境二:爬取漫畫數(shù)據(jù)實例化WebDriver定位元素操控瀏覽器等待Keyboard知識準備threading情境二:爬取漫畫數(shù)據(jù)線程介紹多線程類似于同時執(zhí)行多個不同程序。線程不能夠獨立執(zhí)行,必須依存在應用程序中,由應用程序提供多個線程執(zhí)行控制。線程在執(zhí)行過程中與進程還是有區(qū)別的,每個獨立的進程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。多線程運行有如下優(yōu)點:使用線程可以把占據(jù)長時間的程序中的任務放到后臺去處理。用戶界面可以更加吸引人,這樣比如用戶點擊了一個按鈕去觸發(fā)某些事件的處理,可以彈出一個進度條來顯示處理的進度。程序的運行速度可能加快。在一些等待的任務實現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內存占用等等。知識準備
threading模塊情境二:爬取漫畫數(shù)據(jù)Python3通過兩個標準庫_thread和threading提供對線程的支持。threading模塊除了包含_thread模塊中的所有方法外,還提供的其他方法:threading.currentThread():返回當前的線程變量。threading.enumerate():返回一個包含正在運行的線程的list。正在運行指線程啟動后、結束前,不包括啟動前和終止后的線程。threading.activeCount():返回正在運行的線程數(shù)量,與len(threading.enumerate())有相同的結果。知識準備
threading模塊情境二:爬取漫畫數(shù)據(jù)threading模塊同樣提供了Thread類來處理線程,Thread類提供了以下方法:run():
用以表示線程活動的方法。start():啟動線程活動。join([time]):
等待至線程中止。這阻塞調用線程直至線程的join()方法被調用中止-正常退出或者拋出未處理的異常-或者是可選的超時發(fā)生。isAlive():
返回線程是否活動的。getName():
返回線程名。setName():
設置線程名。知識準備Pillow情境二:爬取漫畫數(shù)據(jù)Pillow介紹Pillow是一個友好的圖形處理庫。PythonPillow庫為您的Python翻譯增加了圖像處理功能。此庫提供廣泛的文件格式支持、高效的內部表示和相當強大的圖像處理功能。核心圖像庫專為快速訪問以幾個基本像素格式存儲的數(shù)據(jù)而設計。它應該為一般圖像處理工具提供堅實的基礎。Pillow包含了圖像處理的多個模塊,提供了充足的工具庫支持。比如:Image、ImageChops、ImageCms、ImageColor、ImageDraw、ImageEnhance、ImageFile、ImageFilter、ImageFont、ImageGrab、ImageMath、ImageOps、ImagePath、ImageShow、...知識準備
Pillow環(huán)境情境二:爬取漫畫數(shù)據(jù)安裝Pillow
可以使用PIP安裝Python的Pillow庫。語法如下:驗證安裝可以使用PIP驗證Pillow庫的安裝成果。語法如下:pipinstallPillowpiplist知識準備
Pillow應用情境二:爬取漫畫數(shù)據(jù)使用Image類閱讀和書寫圖像切割、粘貼和合并圖像幾何轉換顏色轉換圖像增強PART03案例講解情境二:爬取漫畫數(shù)據(jù)案例講解爬取漫畫數(shù)據(jù)情境二:爬取漫畫數(shù)據(jù)步驟:確定目標網(wǎng)頁分析并確定目標數(shù)據(jù)安裝環(huán)境構建項目編寫網(wǎng)頁爬蟲程序運行程序效果截圖案例講解爬取漫畫數(shù)據(jù)情境二:爬取漫畫數(shù)據(jù)具體實操跟隨教材內的步驟實施。PART04總結情境二:爬取漫畫數(shù)據(jù)總結總結情境二:爬取漫畫數(shù)據(jù)
本情景,主要介紹了Selenium、PhantomJS、threading、Pillow
的相關知識,通過對案例的學習,讓同學們掌握
Selenium、PhantomJS、threading、Pillow
的運用。謝謝課程名稱:Python網(wǎng)絡爬蟲Python網(wǎng)絡爬蟲第三單元
爬取APP數(shù)據(jù)教學概述概述
APP(Application),也稱為手機軟件或應用軟件,主要指安裝在智能手機上的軟件,完善原始系統(tǒng)的不足與個性化。使手機完善其功能,為用戶提供更豐富的使用體驗的主要手段。手機軟件的運行需要有相應的手機系統(tǒng),目前主要的手機系統(tǒng)有:蘋果公司的iOS系統(tǒng)、谷歌公司的Android(安卓)系統(tǒng)。
隨著智能手機的普及,人們在溝通、社交、娛樂等活動中越來越依賴于手機app軟件。手機軟件是通過分析,設計,編碼,生成軟件,而手機軟件是一種特殊的軟件。
APP中主要做到的效果是數(shù)據(jù)展示和用戶交互,而數(shù)據(jù)的來源,也就是本次學習情境的目標所在,是通過HTTP和Socket通信方式與后臺服務器定義的接口進行交互的。教學概述教學導航知識重點Fiddler及
Android模擬器的安裝使用。知識難點利用
Fiddler及
Android模擬器
進行爬取app項目開發(fā)。推薦教學方式從
Fiddler及
Android模擬器
功能進行介紹,讓學生有大體了解實際爬取app項目開發(fā),讓學生掌握如何使用。建議學時8學時推薦學習方法通過老師講解掌握
Fiddler及
Android
模擬器基本概念,然后進行實操一步步通過Fiddler及
Android模擬器構建爬蟲項目,加深印象。必須掌握的理論知識Fiddler的使用;網(wǎng)絡交互數(shù)據(jù)解析;必須掌握的技能Fiddler的安裝和配置;Fiddler的使用;網(wǎng)絡交互數(shù)據(jù)解析;模擬器的安裝配置。第三單元
爬取APP數(shù)據(jù)0304Fiddler與模擬器的整合關聯(lián)Fiddler和模擬器分析并確定目標數(shù)據(jù)構建項目采集數(shù)據(jù)0102情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)01030204情景概述知識準備案例講解總結PART01情境概述情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)情境概述學習情境描述1.教學情境描述:通過對Fiddler工具的安裝、配置和使用來定位數(shù)據(jù)訪問具體細節(jié);通過對真機或模擬器APP數(shù)據(jù)訪問和用戶交互操作的數(shù)據(jù)和行為解析;通過Requests或其他爬蟲技術的應用,爬取手機應用APP交互數(shù)據(jù)。2.關鍵知識點:Fiddler的安裝和配置、Fiddler的使用、網(wǎng)絡交互數(shù)據(jù)解析、模擬器的安裝配置、APP的應用、Requests數(shù)據(jù)請求、JSON數(shù)據(jù)解析、CSV數(shù)據(jù)存儲。3.關鍵技能點:Fiddler的使用、模擬器的安裝配置、Requests數(shù)據(jù)請求、JSON數(shù)據(jù)解析、CSV數(shù)據(jù)存儲。
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)情境概述本節(jié)課的學習目標理解APP應用數(shù)據(jù)交互和用戶行為交互原理。掌握Fiddler工具安裝配置。掌握模擬器的安裝配置。掌握Fiddler和模擬器的整合。掌握Fiddler定位解析網(wǎng)絡數(shù)據(jù)交互功能。掌握Requests網(wǎng)絡爬蟲技術。掌握JSON數(shù)據(jù)格式并解析。掌握CSV數(shù)據(jù)格式并存儲。
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)情境概述本節(jié)課的任務書完成Fiddler軟件的安裝配置。完成模擬器軟件的安裝配置。完成Fiddler與模擬器的整合。使用Fiddler定位新聞類APP數(shù)據(jù)交互接口與數(shù)據(jù)結構。使用Requests獲取接口數(shù)據(jù)。使用JSON解析接口數(shù)據(jù)。使用CSV存儲APP數(shù)據(jù)。
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)PART02知識準備情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備引導問題APP數(shù)據(jù)交互和Web數(shù)據(jù)交互一樣嗎?如果不一樣,有什么不一樣?如果APP和Web數(shù)據(jù)交互不同,有什么不同?定位并抓取APP數(shù)據(jù)和Web數(shù)據(jù)一樣嗎?如果不一樣,有什么不一樣?我們可以通過什么方式定位APP數(shù)據(jù)接口?定位APP數(shù)據(jù)可能會遇到哪些問題?如何獲取、解析、存儲APP接口數(shù)據(jù)?
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備知識點介紹Fiddler介紹Fiddler安裝與配置Fiddler應用Android
模擬器介紹Android
模擬器安裝與配置
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備思維導圖
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備Fiddler介紹
Fiddler是一個HTTP的調試代理,以代理服務器的方式,監(jiān)聽系統(tǒng)的HTTP網(wǎng)絡數(shù)據(jù)流動。Fiddler可以讓你檢查所有的HTTP通訊,設置斷點,以及Fiddler所有的“進出”的數(shù)據(jù)。Fiddler還包含一個簡單卻功能強大的基于JScript.NET事件腳本子系統(tǒng),它可以支持眾多的HTTP調試任務。Fiddler安裝與配置
Fiddler是一款軟件工具,以下是相關操作。1.1.下載軟件
Fiddler有各種不同的版本,你可以根據(jù)需要下載,官網(wǎng)下載地址:
/download/fiddler情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.2.安裝軟件
運行下載的Fiddler安裝包:FiddlerSetup.exe,選定安裝地址,默認安裝即可,效果如圖3-2所示。情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.2.安裝軟件
情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置
打開Fiddler,效果如圖3-3所示
圖3-3Fiddler安裝情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置a.配置HTTPS支持
a1:默認情況下,Fiddler不會捕獲和解密安全的HTTPS流量。要捕獲通過HTTPS發(fā)送的數(shù)據(jù),需要啟用HTTPS流量解密。配置項位于Tools>Options>HTTPS,配置如圖3-4所示。
圖3-4啟用HTTPS流量解密情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置a.配置HTTPS支持也可以設置跳過特定的主機流量解密,配置如圖3-5所示。
圖3-5過濾指定主機情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置a.配置HTTPS支持HTTPS協(xié)議是安全協(xié)議,通常需要安全密鑰驗證等。本次APP移動端數(shù)據(jù)偵聽過程安全驗證要求更高,為了在保證安全的情況下提高效率,可以將服務器密鑰驗證忽略,并將FiddlerRootCertificate導出并導入到對應Android機器中。忽略密鑰驗證如圖3-6所示,導出RootCertificate如圖3-7所示。情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置a.配置HTTPS支持
圖3-6忽略安全密鑰校驗情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置a.配置HTTPS支持
圖3-7導出RootCertificate情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置b.允許遠程客戶端連接
配置允許遠程客戶端連接,保持Fiddler和Android機器保持長連接狀態(tài)。配置項位于Tools>Options>Connections,配置如圖3-8所示。
圖3-8允許客戶端遠程連接情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備
Fiddler安裝與配置1.3.Fiddler配置c.配置客戶端應用目標端口
配置客戶端應用目標端口,保持Fiddler和Android機器連接狀態(tài)。配置項位于Tools>Options>Connections,配置如圖3-9所示。
圖3-9配置客戶端應用目標端口情境一:使用Fiddler+Requests爬取新聞類APP接口數(shù)據(jù)知識準備Fiddler應用
Fiddler的主界面分為工具面板、會話面板、監(jiān)控面板、狀態(tài)面板。我們需要認知的主要是會話面板和監(jiān)控面板。1.1.會話面板
會話面板效果如圖3-10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度醫(yī)療健康股權分配與產業(yè)布局協(xié)議
- 二零二五年度酒店員工勞動合同與員工培訓及職業(yè)素養(yǎng)提升合同
- 2025年度金融控股集團間戰(zhàn)略資金借款合同
- 二零二五年度高空作業(yè)安全協(xié)議責任書(高空設備檢修安全協(xié)議)
- 二零二五年度鮮魚養(yǎng)殖與品牌營銷合作合同
- 二零二五年度電子商務平臺技術支持合同范本
- 二零二五年度汽車租賃代駕保險保障合同
- 2025年度餐廳門面租賃與地方旅游發(fā)展合作合同
- 安徽省2025年度非全日制用工勞動合同書解除與終止協(xié)議
- 數(shù)據(jù)安全保障與服務合作合同
- 算力中心建設的技術要求
- 部編版小學道德與法治四年級下冊課堂同步練習試題及答案(全冊)
- 2024煤礦安全規(guī)程解讀
- 德州環(huán)鋰新能源科技有限公司2萬噸年廢舊鋰電池回收項目環(huán)境影響報告書
- 2025年江蘇省中職《英語》學業(yè)水平考試核心考點試題庫500題(重點)
- 延期實習申請書
- 2025年江蘇信息職業(yè)技術學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 易制毒化學品理論考試試題及答案
- 2024年煙臺汽車工程職業(yè)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 2024年江西旅游商貿職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 2025年春新人教PEP版英語三年級下冊課件 Unit 1 Part C 第8課時 Reading time
評論
0/150
提交評論