




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python網絡爬蟲第二單元爬取動態網頁教學概述概述動態網頁,是指跟靜態網頁相對的一種網頁編程技術。靜態網頁,隨著html代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了(除非修改頁面代碼)。而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者數據庫操作的結果而發生改變的。
動態網頁是基本的html語法規范與Java、VB、VC等高級程序設計語言、數據庫編程等多種技術的融合,以期實現對網站內容和風格的高效、動態和交互式的管理。因此,從這個意義上來講,凡是結合了HTML以外的高級程序設計語言和數據庫技術進行的網頁編程技術生成的網頁都是動態網頁。第二單元爬取動態網頁02爬取百度圖片數據爬取漫畫數據01情境一:爬取百度圖片數據01030204情境概述知識準備案例講解總結PART01情境概述情境一:爬取百度圖片數據情境概述學習情境描述教學情境描述:通過對Scrapy、JSON、MySQL知識點的學習,對技術綜合應用的操作,學習并掌握如何去區分靜態網頁和動態網頁交互、去分析動態網頁實際數據來源、去獲取動態網頁交互數據,最終達到:使用Scrapy獲取動態數據源;使用JSON解析動態數據;使用PyMySQL存儲動態結構化數據MySQL數據庫。關鍵知識點:Python庫環境管理;Scrapy網絡交互;JSON數據格式;JSON數據解析;PyMySQL結構化存儲。關鍵技能點:Scrapy網頁及接口請求;JSON數據解析;MySQL結構化數據存儲。情境一:爬取百度圖片數據情境概述本節課的學習目標掌握Python模塊庫(Scrapy、JSON、PyMySQL等)安裝管理應用。能區分靜態網頁和動態網頁。能根據實際情況,定位動態數據來源。理解Scrapy框架體系。理解Scrapy網絡爬蟲框架及原理。掌握Scrapy項目系統配置及爬蟲策略配置。能使用Scrapy進行網頁和接口數據采集工作。能使用JSON解析動態數據源。能使用PyMySQL完成MySQL結構化數據存儲。情境一:爬取百度圖片數據情境概述本節課的任務書完成通過PIP命令安裝及管理Scrapy、JSON、PyMySQL庫。完成通過Scrappy獲取列表數據、分頁數據及多層級的汽車銷售數據網頁源代碼。完成通過XPath格式化網頁源文檔,并獲取對應類型的汽車銷售數據。完成通過Pymysql將解析到的各車型銷售數據結構化存儲于本地MySQL中。情境一:爬取百度圖片數據PART02知識準備情境一:爬取百度圖片數據知識準備引導問題了解什么是動態網頁,和靜態網頁有什么不同。如何定位動態網頁數據源?如何獲取動態網頁數據源?動態網頁數據是以什么樣的格式或結構展現?如何解析動態網頁數據?如何將動態數據在MySQL結構化存儲?情境一:爬取百度圖片數據知識準備知識點介紹ScrapyJSONPyMySQL情境一:爬取百度圖片數據知識準備JSON情境一:爬取百度圖片數據JSON介紹JSON(JavaScript
ObjectNotation,JS對象簡譜)是一種輕量級的數據交換格式。它基于ECMAScript(歐洲計算機協會制定的js規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。JSON是DouglasCrockford在2001年開始推廣使用的數據格式,在2005年-2006年正式成為主流的數據格式。JSON是存儲和交換文本信息的語法,類似XML。JSON比XML更小、更快,更易解析。知識準備
JSON語法規則情境一:爬取百度圖片數據JSON使用
JavaScript
語法來描述數據對象,但是JSON仍然獨立于語言和平臺。JSON語法是JavaScript語法的子集,包括以下內容:數據在名稱/值對中數據由逗號分隔花括號保存對象方括號保存數組JSON支持以下數據結構:名/值對集合:這一數據結構由不同的鍵值對組成。無序的對象結構:多個名稱/值構成的封裝體,類似字典表。有序的值列表:包括數組,列表,向量或序列等等。知識準備
情境一:爬取百度圖片數據JSON名稱/值對JSON數據的書寫格式是:名稱/值對。名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值。語法如下所示:其中value所對應的值可以是:數字、字符串、邏輯值、數組、對象、null。具體描述如下:"name":value知識準備
情境一:爬取百度圖片數據JSON對象JSON對象使用在大括號({})中書寫,對象可以包含多個
key/value(鍵/值)對。其中:key必須是字符串,value可以是合法的JSON數據類型(字符串,數字,對象,數組,布爾值或null)。key和value中使用冒號(:)分割。每個key/value對使用逗號(,)分割。
數據結構如下:{"鍵名1":值1,"鍵名2":值2,……"鍵名n":值n}知識準備
情境一:爬取百度圖片數據JSON數組JSON數組結構是用中括號“[]”括起來,中括號內部由0個或多個以英文逗號“,”分隔的值列表組成。數據結構如下:[{"鍵名1":值1,"鍵名2":值2},{"鍵名3":值3,"鍵名4":值4},……]知識準備
Python中使用JSON情境一:爬取百度圖片數據
在Python中要操作JSON數據對象,需要使用json模塊。
JSON模塊為Python內置模塊,在環境安裝時已自動安裝上,所以可以直接使用框架庫,無需額外安裝。
在json模塊中,主要是對Python數據的編碼和解碼,分別對應函數:dumps()、loads()。知識準備
情境一:爬取百度圖片數據dumps()json.dumps():對數據進行編碼,將Python對象編碼成JSON字符串。語法如下:Python對象轉換為JSON數據會有類型轉化,類型對照表如下: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)知識準備
情境一:爬取百度圖片數據loads()json.loads():對數據進行解碼,將JSON字符串解碼成Python對象。語法如下:JSON數據轉換為Python對象會有類型轉化,類型對照表如下:json.loads(s[,encoding[,cls[,object_hook[,parse_float[,parse_int[,parse_constant[,object_pairs_hook[,**kw]]]]]]]])PART03案例講解情境一:爬取百度圖片數據案例講解爬取百度圖片數據情境一:爬取百度圖片數據步驟:確定目標網頁分析并確定目標數據安裝環境構建項目編寫數據采集程序編寫數據存儲程序運行程序效果截圖案例講解爬取百度圖片數據情境一:爬取百度圖片數據具體實操跟隨教材內的步驟實施。PART04總結情境一:爬取百度圖片數據總結總結情境一:爬取百度圖片數據
本情景,主要介紹了Scrapy、JSON、PyMySQL的相關知識,通過對案例的學習,讓同學們掌握
Scrapy、JSON、PyMySQL
的運用。情境二:爬取漫畫數據01030204情境概述知識準備案例講解總結PART01情境概述情境二:爬取漫畫數據情境概述學習情境描述教學情境描述:通過對Selenium、PhantomJS、threading、Pillow知識點的學習,對技術綜合應用的操作,學習并掌握如何去區分靜態網頁和動態網頁交互、去分析動態網頁實際數據來源、去模擬瀏覽器訪問網頁、模擬用戶操作瀏覽器、去獲取動態網頁交互數據。達到本次最終目的:使用Selenium模擬瀏覽器與用戶行為操作、使用PhantomJS提供無界面瀏覽器支持與滾動截屏支持、使用threading構建多線程數據采集、使用Pillow裁剪處理并保存目標圖片。關鍵知識點:Python庫環境管理;PhantomJS軟件安裝與配置;Selenium框架理解;Selenium原理;Selenium自動化操作;threading多線程構建與管理;Pillow圖片裁剪與存儲。關鍵技能點:PhantomJS軟件安裝與配置;Selenium自動化操作;threading多線程構建與管理;Pillow圖片裁剪與存儲。情境二:爬取漫畫數據情境概述本節課的學習目標掌握Python模塊庫(Selenium、threading、Pillow等)安裝管理應用。掌握PhantomJS軟件安裝與配置。能區分靜態網頁和動態網頁。能根據實際情況,定位動態數據來源。理解Selenium自動化框架及原理。掌握Selenium運行環境和項目配置。能使用Selenium模擬瀏覽器操作和用戶行為操作。能使用threading構建和管理多線程爬蟲任務。能使用Pillow對圖片進行裁剪和存儲。情境二:爬取漫畫數據情境概述本節課的任務書完成通過PIP命令安裝及管理Selenium、threading、Pillow庫。完成通過Selenium模擬瀏覽器請求,模擬用戶行為操作,獲取動漫作品的章節列表及章節漫畫圖片原型。完成通過threading構建和管理多線程爬蟲任務。完成通過Pillow的相關模塊完成對圖片進行裁剪和存儲操作。情境二:爬取漫畫數據PART02知識準備情境二:爬取漫畫數據知識準備引導問題網頁中列表數據和圖片加載方式有幾種?分別是如何加載的,動態加載和靜態加載的區別。如何定位動態網頁列表數據源和圖片數據源?除了Requests或Scrapy直接請求地址的方式,還可以通過哪些方式獲取動態網頁數據和圖片數據?如何通過Selenium獲取動態加載的網頁圖片?如何通過Selenium技術實現網頁截屏?如何將圖片進行裁剪并本地化存儲?情境二:爬取漫畫數據知識準備知識點介紹PhantomJSSeleniumthreadingPillow情境二:爬取漫畫數據知識準備PhantomJS情境二:爬取漫畫數據PhantomJS介紹PhantomJS是一個無界面的、可腳本編程的WebKit瀏覽器引擎。它可以在Windows、macOS、Linux和FreeBSD系統上運行。使用QtWebKit作為后端,它為各種Web標準提供快速和本地支持:DOM處理、CSS選擇器、JSON、畫布和SVG。PhantomJS有如下特點:PhantomJS是一個基于webkit內核、無界面的瀏覽器,即它就是一個瀏覽器,只是其內的點擊、翻頁等人為相關操作需要程序設計實現;PhantomJS提供JavascriptAPI接口,可以通過編寫JS程序直接與webkit內核交互;PhantomJS的應用:無需瀏覽器的Web測試、網頁截屏、頁面訪問自動化、網絡監測。知識準備
PhantomJS安裝與配置情境二:爬取漫畫數據下載軟件PhantomJS是一款無頭瀏覽器,是一款軟件。官網下載地址:
下載phantomjs-2.1.1-windows.zip后解壓到本地文件夾即可。環境配置定位到phantomjs.exe所在地址,此處演示地址為:C:\Software\phantomjs-2.1.1-windows\bin,將其添加在系統環境變量中。/download.html知識準備
情境二:爬取漫畫數據驗證安裝使用快捷鍵打開CMD命令窗口,輸入查看PhantomJS的版本。如圖:知識準備
PhantomJS運行腳本情境二:爬取漫畫數據PhantomJS是一款無頭瀏覽器,也可以使用PhantomJS命令行工具運行JS腳本。PhantomJS運行腳本案例如圖:知識準備Selenium情境二:爬取漫畫數據Selenium框架介紹Selenium是支持web瀏覽器自動化的一系列工具和庫的綜合項目。它提供了擴展來模擬用戶與瀏覽器的交互,用于擴展瀏覽器分配的分發服務器,以及用于實現
W3CWebDriver規范的基礎結構,該規范允許您為所有主要Web瀏覽器編寫可互換的代碼。Selenium的核心是
WebDriver,這是一個編寫指令集的接口,可以在許多瀏覽器中互換運行。知識準備
Selenium搭建情境二:爬取漫畫數據安裝Selenium
可以使用PIP安裝Python的Selenium庫。語法如下:驗證安裝可以使用PIP驗證Selenium庫的安裝成果。語法如下:pipinstallSeleniumpiplist知識準備
情境二:爬取漫畫數據下載WebDriver二進制文件通過WebDriver,Selenium支持市面上所有主流的瀏覽器,如Chrom(ium)、Firefox、InternetExplorer、Opera和Safari。盡管并非所有瀏覽器都對遠程控制提供官方支持,但WebDriver盡可能使用瀏覽器的內置自動化支持來驅動瀏覽器。常見瀏覽器及其對應的WebDriver二進制文件下載地址:知識準備
情境二:爬取漫畫數據配置二進制文件環境通過將包含WebDriver二進制文件的文件夾添加到系統path環境變量中,Selenium將能夠找到其他二進制文件,而無需您的測試代碼來定位驅動程序的確切位置。如圖:驗證Path打開命令行窗口,輸入WebDriver名稱,查看驅動程序啟動的輸出,如圖:知識準備
WebDriver通信介紹情境二:爬取漫畫數據WebDriver通過一個驅動程序與瀏覽器對話。通信基本方式是:直接通信,WebDriver通過驅動程序向瀏覽器傳遞命令,然后通過相同的路徑接收信息。結構如圖:知識準備
Selenium應用情境二:爬取漫畫數據實例化WebDriver定位元素操控瀏覽器等待Keyboard知識準備threading情境二:爬取漫畫數據線程介紹多線程類似于同時執行多個不同程序。線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。線程在執行過程中與進程還是有區別的,每個獨立的進程有一個程序運行的入口、順序執行序列和程序的出口。多線程運行有如下優點:使用線程可以把占據長時間的程序中的任務放到后臺去處理。用戶界面可以更加吸引人,這樣比如用戶點擊了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度。程序的運行速度可能加快。在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內存占用等等。知識準備
threading模塊情境二:爬取漫畫數據Python3通過兩個標準庫_thread和threading提供對線程的支持。threading模塊除了包含_thread模塊中的所有方法外,還提供的其他方法:threading.currentThread():返回當前的線程變量。threading.enumerate():返回一個包含正在運行的線程的list。正在運行指線程啟動后、結束前,不包括啟動前和終止后的線程。threading.activeCount():返回正在運行的線程數量,與len(threading.enumerate())有相同的結果。知識準備
threading模塊情境二:爬取漫畫數據threading模塊同樣提供了Thread類來處理線程,Thread類提供了以下方法:run():
用以表示線程活動的方法。start():啟動線程活動。join([time]):
等待至線程中止。這阻塞調用線程直至線程的join()方法被調用中止-正常退出或者拋出未處理的異常-或者是可選的超時發生。isAlive():
返回線程是否活動的。getName():
返回線程名。setName():
設置線程名。知識準備Pillow情境二:爬取漫畫數據Pillow介紹Pillow是一個友好的圖形處理庫。PythonPillow庫為您的Python翻譯增加了圖像處理功能。此庫提供廣泛的文件格式支持、高效的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際美術設計師作品集展示試題及答案
- 建模應用技術試題及答案
- 2024年廣告設計師證書考試設計業務題及答案
- 2024年廣告設計師數字傳播試題及答案
- 護士呼吸考試題及答案
- 廣告設計中的文化表現與反映試題及答案
- 2024年設計師考試的嚴謹準備策略試題及答案
- 2024年紡織品設計師證書考試的復習提示及答案
- 2024年助理廣告師各科目的復習建議試題及答案
- 檢驗員在質量控制中的實踐經驗試題及答案
- 電動葫蘆(行車)檢查記錄表
- DB2110T 0004-2020 遼陽地區主要樹種一元、二元立木材積表
- 100以內進位加法練習題1
- 建設工程施工項目每日“防高墜三檢”檢查記錄表
- 服裝廠建設項目可行性研究報告
- 學校體育學(第三版)ppt全套教學課件
- 住建部《建筑業10項新技術(2017版)》解讀培訓課件
- 基于深度學習的問題鏈講座課件(44張PPT)
- 水文學習題和答案解析
- 西安交通大學趙進全模擬電子技術基礎第8-9章
- 畫法幾何與陰影透視復習題(DOC)
評論
0/150
提交評論