Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-5 動態頁面采集技術與Python實現_第1頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-5 動態頁面采集技術與Python實現_第2頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-5 動態頁面采集技術與Python實現_第3頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-5 動態頁面采集技術與Python實現_第4頁
Python爬蟲大數據采集與挖掘-微課視頻版-課件 第二版-5 動態頁面采集技術與Python實現_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python爬蟲大數據采集與挖掘(5)

--動態頁面采集技術與Python實現《Python爬蟲大數據采集與挖掘》第二版.微課視頻版(清華大學出版社,2025)

提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術動態頁面區別于靜態頁面的最主要特征是頁面內容的生成方式,動態頁面的內容生成方式可以分成兩類,即服務端生成、客戶端生成。服務器生成Web頁面中經常使用的腳本語言有:jsp、asp、php等,使用這些語言連接數據庫、查詢數據庫、生成給用戶的HTML文檔。一個簡單的例子是用戶登錄另一種在服務器進行內容生成的途徑是通過在HTML文檔中嵌入SSI(ServerSideInclude)指令。包含這種指令的文件的默認擴展名是.stm、.shtm或.shtml,這樣,當客戶端訪問這類文件時,Web服務器端就會對這些文件進行讀取和解析,把文件中包含的SSI指令解釋出來,最終生成HTML文檔推送給客戶端。與內容生成有關的常見指令是include客戶端生成在這種生成方式中,Web頁面中需要嵌入一定腳本或插件。常用的腳本語言包括JavaScript、VBScript、actionScript等,插件包括ActiveX控件、Flash插件等。這些腳本或插件具備瀏覽器事件做出相應、可以讀寫HTML中的元素、可以創建或修改Cookie等功能,這些功能的實現要求客戶端具有執行腳本、下載并執行插件的能力。通過在瀏覽器內執行這些腳本或插件功能,實現Web頁面內容的生成,并進行動態更新。動態頁面交互的實現通過URL傳遞請求參數協議://域名部分:端口號/目錄/文件名.文件后綴?參數1=值#標志&參數2=值#標志?表示第一個參數的開始,起到分隔的作用。參數的基本形式是”參數=值”,不同參數之間用&連接起來。例如baidu的檢索功能的URL/s?wd=%E5%A4%A7%E6%95%B0%E6%8D%AE&rsv_spt=1&rsv_iqid=0xb437f6a505c8c83f&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg其中,wd是檢索的關鍵詞,utf-8編碼通過Cookie獲取命令參數Cookie中記錄了一些客戶端和服務器之間交互的參數,例如在購物網站上用戶設定的城市、登錄用戶名和口令等,這樣對于需要用戶登錄的頁面中,就可以自動讀取Cookie內容作為請求的參數。訪問淘寶,頭部中的CookieAjax支持Ajax的瀏覽器配置有Ajax引擎,Ajax通過XMLHttpRequest和Web服務器進行異步通信,利用iframe技術實現按需獲取數據。通常用于在后臺與服務器進行少量數據交換,在不重新加載整個網頁的情況下,對網頁的局部進行更新觸發條件頁面中的定時器鼠標或鍵盤事件驅動定時觸發:每隔一定時間自動查詢行情有的頁面的翻頁也是ajax如/china/提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術主要的采集技術可以歸納為以下四種類型。(1)構造帶參數的URL,利用參數傳遞動態請求;(2)構造Cookie攜帶參數,利用HTTP頭部傳遞動態請求的參數;(3)離線分析Ajax的動態請求,使用靜態頁面采集技術,或者通過Cookie、Post等形式發送請求參數;(4)模擬瀏覽器技術。提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術/Search?keyword=互聯網大數據&enc=utf-8表示搜索的關鍵詞是“互聯網大數據”,編碼方式是utf-8。因此,爬蟲在采集類似動態頁面時,就可以直接填充關鍵詞,構成完整的帶參數的URL,然后發送給Web服務器。參數在URL中可能是經過編碼的這種動態頁面采集技術比較簡單,關鍵在于構建合適的URL。url='/Search'#以字典存儲查詢的關鍵詞及屬性qrydata={'keyword':'互聯網大數據','enc':'utf-8',}lt=[]fork,vinqrydata.items():lt.append(k+'='+str(v))query_string='&'.join(lt)

url=url+'?'+query_stringprint(url)提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術Cookie由服務端生成,可以在瀏覽器F12中跟蹤頁面請求獲得。在瀏覽器中登錄賬號,獲得登錄成功后的cookie,該cookie可以用來進行自動登錄。但要注意cookie可能存在有效期,過期后重新獲取。在爬蟲中實現基于Cookie的動態交互過程。該過程分為兩個環節一是Cookie的獲得或構造二是將Cookie傳遞到服務器最簡單準確的方式是通過瀏覽器的開發者工具或開發者模式來獲得。只要將Cookie的屬性值復制出來,保存成文本文件即可使用方法importrequests

f=open(r'taobao-hk.txt')#打開所保存的cookies內容文件cookies={}#初始化cookies字典變量forlineinf.read().split(';'):#按照字符:進行劃分讀取。其設置為1就會把字符串拆分成2份

name,value=line.strip().split('=',1)cookies[name]=value#為字典cookies添加內容

r=requests.get("/",cookies=cookies)#cookies中的內容作為參數提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術Web頁面可以使用Javascript等腳本語言來生成帶參數的URL,并最終也可能通過Ajax引擎發送到服務器上執行。這種動態頁面訪問方式中,最重要的關鍵技術問題是,要尋找到Ajax動態加載的請求URL地址。很多實時性比較強的網站都采用Ajax進行內容的動態加載,例如提供實時天氣、股票行情等的網站。這類信息的自動獲取就需要尋找相應的URL開發者模式下選擇Network、JS,如圖5-9所示,即可看到頁面中加載的JS。第二種獲得URL地址的方法是通過請求頭的Referer屬性,在3.4.3節中提到,請求頭中該屬性表示所請求的URL是哪個頁面中的鏈接。當鼠標移動到“酒店點評”處,可以看出,其超鏈接指向了“javascript:void(0)”。在其他很多網站的動態頁面中都有類似的鏈接,顯然爬蟲通過這個鏈接是無法獲得真正評論URL。要獲得這些評論,首先要找到請求的URL。進入開發者模式之后,通過鼠標點擊操作,可以在評論信息頁面檢查對應的請求過程但是當遇到加密的JS時,要分析并找到請求地址就會非常困難,需要耐心尋找頁面特征,以及在不同頁面之間交互過程中尋找動態請求之間的關系,就有可能獲得最終發送給Web服務器的請求信息。獲取動態請求參數一般的情況下,Ajax的動態請求使用帶參數的URL,這時可以直接使用前面提到的方法來構造URL。但是,頁面還可以通過提交(POST)數據的方式來向服務器發送請求的動態參數,在攜程、亞馬遜等許多存在用戶評論的網站上廣泛使用這種技術。攜程酒店評論頁面在瀏覽器開發者模式下看到的結果,可以看出在請求時采用了Payload的參數傳遞方式,這也是Ajax的一種典型方式,在許多類似的動態頁面中都存在。只要將這些參數復制出來,寫到程序中。發送帶參數的請求取決于請求的方式是GET或POST,所以事先要通過瀏覽器跟蹤獲得該方式。對于GET的方法,和普通爬蟲一樣處理。5.5.2展示的是一個POST方式發送請求的例子提綱動態頁面內容生成與交互動態頁面采集技術使用帶參數的URL利用Cookie使用Ajax模擬瀏覽器技術模擬瀏覽器有三種實現方式,一種是以模擬特定瀏覽器的header信息方式實現對瀏覽器的模擬,一種是使用瀏覽器內核(例如webkit),另外還可以直接在瀏覽器上開發組件(firefox/chrome)以實現動態頁面的采集。以模擬特定瀏覽器的header信息方式實現對瀏覽器的模擬useragent='Mozilla/5.0(Linux;Android6.0;Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.121MobileSafari/537.36'http_headers={'User-Agent':useragent,'Accept':'text/html'#其他頭部屬性}page=requests.get(url,headers=http_headers)#url要請求的網址使用瀏覽器內核當頁面JS腳本比較復雜、AJAX交互較多或存在不同頁面之間大量數據交換的情況下,使用瀏覽器組件來模擬瀏覽器進行頁面內容采集就是比較合適的選擇了。這里以selenium為例介紹具體方法。它可以模擬真實瀏覽器,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。以爬蟲自動登陸郵箱,查看有沒有新郵件為例。為達到目的,需要經過安裝配置、頁面結構分析和程序實現三個步驟1.安裝配置在python下安裝selenium,執行pipinstallselenium即可,如圖下載chromedriver(/index.html),這里以以chrome為例。chromedriver的版本有很多,一定要下載與電腦上chrome瀏覽器版本相對應的版本。下載zip包之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論