大數(shù)據(jù)采集與預(yù)處理課件:requests技術(shù)應(yīng)用案例-業(yè)務(wù)網(wǎng)站C動(dòng)態(tài)數(shù)據(jù)采集1_第1頁(yè)
大數(shù)據(jù)采集與預(yù)處理課件:requests技術(shù)應(yīng)用案例-業(yè)務(wù)網(wǎng)站C動(dòng)態(tài)數(shù)據(jù)采集1_第2頁(yè)
大數(shù)據(jù)采集與預(yù)處理課件:requests技術(shù)應(yīng)用案例-業(yè)務(wù)網(wǎng)站C動(dòng)態(tài)數(shù)據(jù)采集1_第3頁(yè)
大數(shù)據(jù)采集與預(yù)處理課件:requests技術(shù)應(yīng)用案例-業(yè)務(wù)網(wǎng)站C動(dòng)態(tài)數(shù)據(jù)采集1_第4頁(yè)
大數(shù)據(jù)采集與預(yù)處理課件:requests技術(shù)應(yīng)用案例-業(yè)務(wù)網(wǎng)站C動(dòng)態(tài)數(shù)據(jù)采集1_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

綜合案例——爬取業(yè)務(wù)網(wǎng)站C本章學(xué)習(xí)目標(biāo)分析業(yè)務(wù)網(wǎng)站C的網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容使用requests庫(kù)編寫(xiě)爬蟲(chóng)代碼獲取指定的動(dòng)態(tài)數(shù)據(jù)使用urlencode方法編碼使用pymysql庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化在進(jìn)入業(yè)務(wù)網(wǎng)站C界面時(shí),在切換“城市”時(shí)會(huì)出現(xiàn)不同的汽車信息。通過(guò)“開(kāi)發(fā)者工具”的Network選項(xiàng)卡中的XHR可以發(fā)現(xiàn)出現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)據(jù)請(qǐng)求URL,如圖5-1所示。因此,接下來(lái)將圍繞該URL進(jìn)行分析。4.5.1

頁(yè)面分析圖5-1動(dòng)態(tài)數(shù)據(jù)請(qǐng)求URL通過(guò)“開(kāi)發(fā)者工具”的Network欄目中的XHR查看該URL的Preview可以看到返回的動(dòng)態(tài)數(shù)據(jù),如圖5-2所示。該數(shù)據(jù)是一個(gè)字典和列表相互嵌套使用的數(shù)據(jù)集合。因此,要獲得指定的數(shù)據(jù)就必須要對(duì)該數(shù)據(jù)集合進(jìn)行準(zhǔn)確的解析。圖5-2動(dòng)態(tài)數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容在“Headers”選項(xiàng)卡,可以看見(jiàn)這個(gè)AJAX請(qǐng)求的URL地址是./ashx/AjaxIndexHotCarByDsj.ashx?cityid=110100其中cityid參數(shù)為110100,如圖5-3所示圖5-3切換該網(wǎng)站的城市位置如圖5-4所示,打開(kāi)“network”選項(xiàng)卡發(fā)現(xiàn)XHR中又出現(xiàn)了AJAX條目,并且和上一個(gè)城市的AJAX條目有共同之處。參數(shù)cityid發(fā)生了改變,變?yōu)榱?00100。./ashx/AjaxIndexHotCarByDsj.ashx?cityid=500100圖5-4由此可以分析得出,此處的cityid參數(shù)就是指代不同的城市編碼,并根據(jù)不同的cityid值返回不同城市的汽車信息,如圖5-5所示。圖5-3通過(guò)使用“開(kāi)發(fā)者工具”詳細(xì)查看并分析了頁(yè)面內(nèi)容,現(xiàn)在已經(jīng)獲得了動(dòng)態(tài)數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容。因此,這里使用requests庫(kù)編寫(xiě)自定義的爬蟲(chóng)代碼,針對(duì)頁(yè)面結(jié)構(gòu)通過(guò)使用循環(huán)語(yǔ)句獲取到頁(yè)面結(jié)構(gòu)中指定的動(dòng)態(tài)數(shù)據(jù)。4.5.2

獲取動(dòng)態(tài)數(shù)據(jù)1)導(dǎo)入urlencode和requests,前者表示使用urlencode方法編碼url,后者表示使用requests對(duì)象來(lái)發(fā)送請(qǐng)求,并返回響應(yīng)的數(shù)據(jù)。fromurllib.parseimporturlencodeimportrequests2)找到需要模擬的AJAX請(qǐng)求的url,并將其復(fù)制給變量original_url。fromurllib.parseimporturlencodeimportrequests3)根據(jù)該AJAX條目的RequestHeaders設(shè)置符合該AJAX的請(qǐng)求基本信息。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)自定義一個(gè)函數(shù)get_one(cityid),講形參設(shè)置為cityid,表示將接收一個(gè)代表城市編碼的參數(shù),并將該參數(shù)傳入字典p中。使用urlencode()方法將字典p的值添加到original_url中,得到完整的URL請(qǐng)求。在try..except..語(yǔ)句中使用requests的get()方法獲得上面的URL,并通過(guò)設(shè)定判斷條件,將得到的response響應(yīng)數(shù)據(jù)格式化為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)再自定義一個(gè)函數(shù)parse(json),將形參設(shè)置為Json,表示這里將接收的數(shù)據(jù)格式為JSON。通過(guò)前面的分析得出,這個(gè)AJAX返回的數(shù)據(jù)是一個(gè)字典列表,因此,通過(guò)設(shè)置判斷條件,使用json[0].get(‘name’)將獲得第一個(gè)字典集合中的車型名稱。defparse(json):ifjson: item=json[0].get(‘

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論