2010-12-15 26 views
5

我想要獲取任意輸入的URL /頁面的某些頁面詳細信息(頁面標題,頁面上的圖像等)。我有一個後端代理腳本,我通過ajax GET使用,以便返回遠程頁面的完整HTML。一旦我得到ajax響應,我試圖運行幾個jQuery選擇器來提取頁面細節。這裏的總體思路:ajax響應字符串上的jQuery選擇器,它是一個完整的html頁面

$.ajax({ 
     type: "GET", 
     url: base_url + "/Services/Proxy.aspx?url=" + url, 
     success: function (data) { 
      //data is now the full html string contained at the url 

      //generally works for images 
      var potential_images = $("img", data); 

      //doesn't seem to work even if there is a title in the HTML string 
      var name = $(data).filter("title").first().text(); 

      var description = $(data).filter("meta[name='description']").attr("content"); 

     } 
    }); 

有時使用$("selector", data)似乎工作,而其他時間$(data).filter("selector")似乎工作。有時候,這兩種都不行當我檢查$(data)的內容時,似乎有些節點通過了,但有些節點只是消失了。有誰知道一個一致的方式來在完整的HTML字符串上運行選擇器嗎?

+0

可能重複http://stackoverflow.com/questions/704679/parse- html-string-with-jquery) – 2014-08-24 03:58:46

回答

2

你的問題有點含糊,特別是w/r/t什麼輸入會導致什麼代碼失敗,以及如何。它可能是格式不正確的HTML,會讓事情變得糟糕 - 但我只能猜測。

這就是說,你最好的賭注是$(data)而非data工作:

$.ajax({ 
    type: "GET", 
    url: base_url + "/Services/Proxy.aspx?url=" + url, 
    success: function(data) { 
     var $data = $(data); 

     //data is now the full html string contained at the url 
     //generally works for images 
     var potential_images = $("img", $data); 

     //doesn't seem to work even if there is a title in the HTML string 
     var name = $data.filter("title").first().text(); 

     var description = $data.filter("meta[name='description']").attr("content"); 
    } 
}); 
[解析HTML使用jQuery字符串(的
+0

不幸的是,輸入可能是任何任意頁面的HTML。我已經嘗試了很多流行的網站,包括cnn.com,twitter.com和espn.go.com - 所有這些網站似乎都有同樣的問題,特別是提取標題時。 – Ben 2010-12-15 23:27:46

相關問題