1. 程式人生 > >Python爬蟲(十九)_動態HTML介紹

Python爬蟲(十九)_動態HTML介紹

JavaScript

JavaScript是網路上最常用也是支持者對多的客戶端指令碼語言。它可以收集使用者的跟蹤資料,不需要過載頁面直接提交表單,在頁面嵌入多媒體檔案,甚至執行網頁遊戲。
我們可以在網頁原始碼的<script>標籤裡看到,比如:

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

jQuery

jQuery是一個非常常見的庫,70%最流行的網站(約200萬)和約30%的其他網站(約2億)都在使用。一個網站使用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>

如果你在一個網站上看到了jQuery,那麼採集這個網站資料的時候要格外小心。jQuery可以動態地建立HTML內容,只有在JavaScript程式碼執行後才會顯示。如果你使用傳統的方法採集頁面內容,就只能獲得JavaScript程式碼執行之前頁面的內容。

Ajax

我們與網站伺服器通訊的唯一方式,就是發出HTTP請求獲取新頁面。如果提交表單之後,或從伺服器獲取資訊之後,網站的頁面不需要重新重新整理,那麼你訪問的網站就在用Ajax技術。
Ajax其實並不是一門語言,而是用來完成網路任務(可以認為它與網路資料採集差不多)的一系列技術。Ajax全稱是Asynchronous JavaScript and XML(非同步JavaScript和XML),網站不需要使用單獨的頁面請求就可以和網路伺服器進行互動(收發資訊)

DHTML

Ajax一樣,動態HTML(Dynamic HTML, DHTML)也是一系列用於解決網路問題的技術集合。DHTML使用客戶端語言改變頁面的HTML元素(HTML, CSS,或者二者皆可改變)。比如頁面上的按鈕只有當用戶移動滑鼠之後才出現,背景色可能每次點選都會改變,或者用一個Ajax請求觸發頁面載入一段內容,網頁是否屬於DHTML,關鍵要看有沒有用JavaScript控制HTML和CSS元素。

那麼,如何搞定?

那些使用了Ajax或DHTML技術改變/載入內容的頁面,可能有一些採集手段。但是用Python解決這個問題只有兩種途徑:

  1. 直接從JavaScript程式碼裡採集內容(費時費力)
  2. 用Python的第三方庫執行JavaScript,直接採集你在瀏覽器裡看到的頁面

JavaScript

JavaScript是網路上最常用也是支持者對多的客戶端指令碼語言。它可以收集使用者的跟蹤資料,不需要過載頁面直接提交表單,在頁面嵌入多媒體檔案,甚至執行網頁遊戲。
我們可以在網頁原始碼的<script>標籤裡看到,比如:

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

jQuery

jQuery是一個非常常見的庫,70%最流行的網站(約200萬)和約30%的其他網站(約2億)都在使用。一個網站使用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>

如果你在一個網站上看到了jQuery,那麼採集這個網站資料的時候要格外小心。jQuery可以動態地建立HTML內容,只有在JavaScript程式碼執行後才會顯示。如果你使用傳統的方法採集頁面內容,就只能獲得JavaScript程式碼執行之前頁面的內容。

Ajax

我們與網站伺服器通訊的唯一方式,就是發出HTTP請求獲取新頁面。如果提交表單之後,或從伺服器獲取資訊之後,網站的頁面不需要重新重新整理,那麼你訪問的網站就在用Ajax技術。
Ajax其實並不是一門語言,而是用來完成網路任務(可以認為它與網路資料採集差不多)的一系列技術。Ajax全稱是Asynchronous JavaScript and XML(非同步JavaScript和XML),網站不需要使用單獨的頁面請求就可以和網路伺服器進行互動(收發資訊)

DHTML

Ajax一樣,動態HTML(Dynamic HTML, DHTML)也是一系列用於解決網路問題的技術集合。DHTML使用客戶端語言改變頁面的HTML元素(HTML, CSS,或者二者皆可改變)。比如頁面上的按鈕只有當用戶移動滑鼠之後才出現,背景色可能每次點選都會改變,或者用一個Ajax請求觸發頁面載入一段內容,網頁是否屬於DHTML,關鍵要看有沒有用JavaScript控制HTML和CSS元素。

那麼,如何搞定?

那些使用了Ajax或DHTML技術改變/載入內容的頁面,可能有一些採集手段。但是用Python解決這個問題只有兩種途徑:

  1. 直接從JavaScript程式碼裡採集內容(費時費力)
  2. 用Python的第三方庫執行JavaScript,直接採集你在瀏覽器裡看到的頁面