2010-12-15 18 views
5

任意に入力されたURL /ページのページの詳細(ページタイトル、ページ上のイメージなど)を取得しようとしています。リモートページの完全なHTMLを返すために、私はajax GET経由で使用するバックエンドプロキシスクリプトを持っています。 Ajaxレスポンスを返すと、いくつかのjQueryセレクタを実行してページの詳細を抽出しようとしています。ここでは一般的な考え方です:完全なhtmlページであるajaxレスポンス文字列のjQueryセレクタ

$.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

[jQueryを使って解析するHTML文字列]の可能複製(http://stackoverflow.com/questions/704679/parse-:あなたの最善の策は、$(data)はなくdataで動作するようである、と述べた

答えて

2

あなたの質問は漠然としていて、特にw/r/tは入力によってどのコードが失敗するか、どのようにして失敗するかです。それはひどいHTMLの形になっているかもしれませんが、私は推測するしかありません。

$.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"); 
    } 
}); 
+0

残念ながら、入力は潜在的に任意のページのHTMLになる可能性があります。私は、cnn.com、twitter.com、espn.go.comなど、人気のある多くのWebサイトで試してみました。これらのサイトには、特にタイトルを抽出する際に同じ問題があるようです。 – Ben

関連する問題