web中一項(xiàng)很對(duì)用戶體驗(yàn)重要的技術(shù)ajax
傳統(tǒng)的Web應(yīng)用允許用戶端填寫表單, 當(dāng)送出表單時(shí)就向網(wǎng)頁服務(wù)器發(fā)送一個(gè)請(qǐng)求。服務(wù)器接收并處理傳來的表單空镜,然后送回一個(gè)新的網(wǎng)頁丰嘉,但這個(gè)做法浪費(fèi)了許多帶寬洁灵,因?yàn)樵谇昂髢蓚€(gè)頁面中的大部分HTML碼往往是相同的房铭。
AJAX應(yīng)用可以僅向服務(wù)器發(fā)送并取回必須的數(shù)據(jù),并在客戶端采用JavaScript處理來自服務(wù)器的回應(yīng)撤摸。因?yàn)樵诜?wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少(大約只有原來的5%)
以上資料引用自維基百科
對(duì)于采用了ajax異步加載的網(wǎng)頁毅桃,一些信息無法直接在html源代碼中讀取,所以常見的download+parse思路行不通准夷。對(duì)于應(yīng)對(duì)這種情況钥飞,強(qiáng)大的網(wǎng)友給出了兩大思路:
1.模擬瀏覽器行為,即執(zhí)行javascript代碼冕象,直接得到處理后的html文件再進(jìn)行解析代承。
可用的工具--phantomjs+selenium。其中phantomjs用于執(zhí)行js代碼渐扮,selenium是web自動(dòng)化測(cè)試工具(在這兒用于模擬用戶點(diǎn)擊網(wǎng)頁url的動(dòng)作)
優(yōu)勢(shì):代碼量少论悴,通用性高掖棉。
劣勢(shì):占用資源高,即耗時(shí)長(zhǎng)膀估。
2.分析ajax對(duì)應(yīng)的XMLHttpRequest(XHR)幔亥,數(shù)據(jù)總是在存數(shù)據(jù)庫中的,只要能分析出相應(yīng)的api就算達(dá)到目的了察纯。
可以借助chrome的開發(fā)者工具帕棉,右鍵->查看->network->xhr
優(yōu)勢(shì):省流量,避免下載冗余html饼记,因此理論效率很高香伴。
劣勢(shì):有可能分析不出來。
以上經(jīng)驗(yàn)來源于selenium+phantomjs, pyspider爬蟲教程