(2018-05-19.Python從Zero到One)3、(爬蟲)動(dòng)態(tài)HTML處理和機(jī)器圖像識別__1.3.1動(dòng)態(tài)HTML介紹

JavaScript

JavaScript 是網(wǎng)絡(luò)上最常用也是支持者最多的客戶端腳本語言。它可以收集 用戶的跟蹤數(shù)據(jù),不需要重載頁面直接提交表單,在頁面嵌入多媒體文件,甚至運(yùn)行網(wǎng)頁游戲。

我們可以在網(wǎng)頁源代碼的<scripy>標(biāo)簽里看到,比如:

<script type="text/javascript" src="https://statics.huxiu.com/w/mini/static_2015/js/sea.js?v=201601150944"></script>

jQuery

jQuery 是一個(gè)十分常見的庫,70% 最流行的網(wǎng)站(約 200 萬)和約 30% 的其他網(wǎng)站(約 2 億)都在使用。一個(gè)網(wǎng)站使用 jQuery 的特征,就是源代碼里包含了 jQuery 入口,比如:

<script type="text/javascript" src="https://statics.huxiu.com/w/mini/static_2015/js/jquery-1.11.1.min.js?v=201512181512"></script>

如果你在一個(gè)網(wǎng)站上看到了 jQuery,那么采集這個(gè)網(wǎng)站數(shù)據(jù)的時(shí)候要格外小心。jQuery 可 以動(dòng)態(tài)地創(chuàng)建 HTML 內(nèi)容,只有在 JavaScript 代碼執(zhí)行之后才會顯示。如果你用傳統(tǒng)的方 法采集頁面內(nèi)容,就只能獲得 JavaScript 代碼執(zhí)行之前頁面上的內(nèi)容。

Ajax

我們與網(wǎng)站服務(wù)器通信的唯一方式,就是發(fā)出 HTTP 請求獲取新頁面。如果提交表單之后,或從服務(wù)器獲取信息之后,網(wǎng)站的頁面不需要重新刷新,那么你訪問的網(wǎng)站就在用Ajax 技術(shù)。

Ajax 其實(shí)并不是一門語言,而是用來完成網(wǎng)絡(luò)任務(wù)(可以認(rèn)為 它與網(wǎng)絡(luò)數(shù)據(jù)采集差不多)的一系列技術(shù)。Ajax 全稱是 Asynchronous JavaScript and XML(異步 JavaScript 和 XML),網(wǎng)站不需要使用單獨(dú)的頁面請求就可以和網(wǎng)絡(luò)服務(wù)器進(jìn)行交互 (收發(fā)信息)。

DHTML

Ajax 一樣,動(dòng)態(tài) HTML(Dynamic HTML, DHTML)也是一系列用于解決網(wǎng)絡(luò)問題的 技術(shù)集合。DHTML 是用客戶端語言改變頁面的 HTML 元素(HTML、CSS,或者二者皆 被改變)。比如頁面上的按鈕只有當(dāng)用戶移動(dòng)鼠標(biāo)之后才出現(xiàn),背景色可能每次點(diǎn)擊都會改變,或者用一個(gè) Ajax 請求觸發(fā)頁面加載一段新內(nèi)容,網(wǎng)頁是否屬于DHTML,關(guān)鍵要看有沒有用 JavaScript 控制 HTML 和 CSS 元素。

那么,如何搞定?

那些使用了 Ajax 或 DHTML 技術(shù)改變 / 加載內(nèi)容的頁面,可能有一些采集手段。但是用 Python 解決這個(gè)問題只有兩種途徑:

直接從 JavaScript 代碼里采集內(nèi)容(費(fèi)時(shí)費(fèi)力)
用 Python 的 第三方庫運(yùn)行 JavaScript,直接采集你在瀏覽器里看到的頁面(這個(gè)可以有)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容