大數據采集與預處理課件:requests技術應用案例-業務網站C動態數據采集1_第1頁
大數據采集與預處理課件:requests技術應用案例-業務網站C動態數據采集1_第2頁
大數據采集與預處理課件:requests技術應用案例-業務網站C動態數據采集1_第3頁
大數據采集與預處理課件:requests技術應用案例-業務網站C動態數據采集1_第4頁
大數據采集與預處理課件:requests技術應用案例-業務網站C動態數據采集1_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

綜合案例——爬取業務網站C本章學習目標分析業務網站C的網頁結構和內容使用requests庫編寫爬蟲代碼獲取指定的動態數據使用urlencode方法編碼使用pymysql庫實現數據的持久化在進入業務網站C界面時,在切換“城市”時會出現不同的汽車信息。通過“開發者工具”的Network選項卡中的XHR可以發現出現了一個動態數據請求URL,如圖5-1所示。因此,接下來將圍繞該URL進行分析。4.5.1

頁面分析圖5-1動態數據請求URL通過“開發者工具”的Network欄目中的XHR查看該URL的Preview可以看到返回的動態數據,如圖5-2所示。該數據是一個字典和列表相互嵌套使用的數據集合。因此,要獲得指定的數據就必須要對該數據集合進行準確的解析。圖5-2動態數據的結構和內容在“Headers”選項卡,可以看見這個AJAX請求的URL地址是./ashx/AjaxIndexHotCarByDsj.ashx?cityid=110100其中cityid參數為110100,如圖5-3所示圖5-3切換該網站的城市位置如圖5-4所示,打開“network”選項卡發現XHR中又出現了AJAX條目,并且和上一個城市的AJAX條目有共同之處。參數cityid發生了改變,變為了500100。./ashx/AjaxIndexHotCarByDsj.ashx?cityid=500100圖5-4由此可以分析得出,此處的cityid參數就是指代不同的城市編碼,并根據不同的cityid值返回不同城市的汽車信息,如圖5-5所示。圖5-3通過使用“開發者工具”詳細查看并分析了頁面內容,現在已經獲得了動態數據的結構和內容。因此,這里使用requests庫編寫自定義的爬蟲代碼,針對頁面結構通過使用循環語句獲取到頁面結構中指定的動態數據。4.5.2

獲取動態數據1)導入urlencode和requests,前者表示使用urlencode方法編碼url,后者表示使用requests對象來發送請求,并返回響應的數據。fromurllib.parseimporturlencodeimportrequests2)找到需要模擬的AJAX請求的url,并將其復制給變量original_url。fromurllib.parseimporturlencodeimportrequests3)根據該AJAX條目的RequestHeaders設置符合該AJAX的請求基本信息。requests_headers={'Referer':'./beijing/','User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)''Chrome/57.0.2987.133Safari/537.36','X-Requested-With':'XMLHttpRequest',}4)自定義一個函數get_one(cityid),講形參設置為cityid,表示將接收一個代表城市編碼的參數,并將該參數傳入字典p中。使用urlencode()方法將字典p的值添加到original_url中,得到完整的URL請求。在try..except..語句中使用requests的get()方法獲得上面的URL,并通過設定判斷條件,將得到的response響應數據格式化為JSON。defget_one(cityid):p={'cityid':cityid}complete_url=original_url+urlencode(p)try:response=requests.get(url=complete_url,params=requests_headers)ifresponse.status_code==200:returnresponse.json()exceptrequests.ConnectionErrorase:print('Error',e.args)5)再自定義一個函數parse(json),將形參設置為Json,表示這里將接收的數據格式為JSON。通過前面的分析得出,這個AJAX返回的數據是一個字典列表,因此,通過設置判斷條件,使用json[0].get(‘name’)將獲得第一個字典集合中的車型名稱。defparse(json):ifjson: item=json[0].get(‘

溫馨提示

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

評論

0/150

提交評論