0

クロスドメインリクエストを作成してhtmlをフェッチし、キャッシュしてから、キャッシュされたhtmlを反復処理してデータを引き出し、最終的にページに配置しようとしています。これは機能していますが、http要求を浪費します。

data.responseText問題は、 jqueryでラップする$(data.responseText)と、画像をプルするために40のhttpリクエストを実行することです。

追加の画像リクエストなしで、変数内にjquery htmlオブジェクトをキャッシュすることは可能ですか?

ここでこのxドメインハックを使用する: https ://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js

getPage: (baseUrl) ->
  console.log("beg scraping")
  $.ajax
    url: baseUrl,
    type: "get",
    dataType: "",
    success: (data) =>      
      frag = data.responseText
      @page = $(frag) # cache in object, now 40 extra reqs.
      # this doesn't work, only returns images
      #@page = $(frag).find('[src]').remove()
      console.log "Scraping done"
    error: (status) ->
      #window.pushError("getPage error: #{status}")
4

2 に答える 2

1

テキストをすばやく検索して、すべての<img>要素を削除できます。次に、jQueryオブジェクトを作成します。

var no_images = $(data.responseText.replace(/<img[^>]*>/g, ''));

役立つと思われる別のスレッドは次のとおりです。

画像をリクエストせずにHTML文字列をjQueryにロードする

于 2012-11-28T05:30:44.867 に答える
1

または、画像を自動的に要求せずに保持したい場合は、src属性を自動的にフェッチされないものに置き換えることができます。例えば

page.replace(/src/g, 'source');

これにより、代わりにsrc参照が「source」の下に保持され、画像が自動的に読み込まれなくなります。

于 2012-12-07T23:32:14.220 に答える