1

外部 Web サイト ページで生成された div のコンテンツを取得する必要があります。

私はかなり長い間探していましたが、運がありません。

そのページからすべての静的コンテンツを取得できました(クロスドメイン)。ただし、その div のコンテンツは、ページ上のボタンをクリックした後にのみ生成されます。

URL は次のようになります: http://www.xxx.com/getPrice したがって、タイプと郵便番号を選択すると、URL はhttp://www.xxx.com/getPrice?Type=5&postcode=3000になります。

その div のコンテンツは、ページのコンテンツ全体が読み込まれてから約 2 ~ 3 秒後に表示されます。

ここにコードがあります

$.ajax({
                   url: link,
                   type: 'GET',
                   success: function (res) {
                       var headline = $(res.responseText).find('#divID').text();
                       $('#container').html(headline);
                   }
               });

アップデート:

jQuery .delay() メソッドは、遅延なく ajax 呼び出しを実行する必要があるため、私の要件を満たすことができません。さらに、呼び出しが実行された後、生成/動的/遅延コンテンツがロードされた後にコールバック関数をトリガーできる必要があります (ページのコンテンツがロードされたときではありません)。だからここに2つの異なる時間があります。それが可能かどうかはわかりません。

更新 2:

完全な方法は私が必要とするものではありません。リクエストが終了するとトリガーされますが、その時までに、div の生成されたコンテンツは生成されていません。だからまだ解決にはなっていません。これが、私が話していることをデモするための写真です。div #output 、そのコンテンツがまだ空であることがわかります。

ここに画像の説明を入力

更新 3:

#output div にコンテンツを挿入するコードを次に示します。

var markerImage = "http://www.racv.com.au/wps/wcm/connect/ebffbd00473d0422974bbfc0de4a49c9/marker.png?MOD=AJPERES&CACHEID=ebffbd00473d0422974bbfc0de4a49c9";
  var searchString="";
  var fuelType=2;
  var resultPage = document.location;
  resultPage = String(resultPage).split("?");   // Get URL without the query string
  resultPage = resultPage[0];
function searchFuel(){
  if (document.getElementById('fuelType3').checked) {
    fuelType = 3;
  } else if (document.getElementById('fuelType2').checked) {
    fuelType = 4;
  } else if (document.getElementById('fuelType4').checked) {
    fuelType = 6;
  } else if (document.getElementById('fuelType1').checked) {
    fuelType = 2;
  } else if (document.getElementById('fuelType5').checked) {
    fuelType = 5;
  }
//window.open("/wps/wcm/connect/racv/internet/primary/my+car/advice+_+information/fuel/petrol+prices/search+for+petrol+prices+around+melbourne?fuelType="+fuelType+searchString, '_self')
window.open(resultPage + "?fuelType=" + fuelType + searchString, "_self");  
}

この関数は、ボタンをクリックするとトリガーされます。以下はコードです。

<input type="image" style="margin-top: 40px; cursor: pointer;" src="/wps/wcm/connect/993c7080474f0a60a0bff5aa2893940e/fpButton.gif?MOD=AJPERES&amp;CACHEID=993c7080474f0a60a0bff5aa2893940e" alt="search" id="search" border="0" class="submit" onclick="searchFuel();" onmouseover="javascript: this.style.cursor='pointer'">
4

2 に答える 2

3

2つの可能性があります:

  1. 「遅延」コンテンツが ajax 呼び出しを介して外部リンクによって読み込まれるかのいずれかです。その場合、この余分な ajax 呼び出しの URL にアクセスする必要があります。

  2. または、「遅延した」コンテンツがすでに応答に存在し、 setTimeout を使用して DOM に挿入されている場合: その場合、データは取得した応答に既に存在しています (非表示の html ノード内、または一部の JavaScript に格納されています)。変数、または javascript コードの exetenso で記述されている...)、応答からそれを抽出する方法を見つける必要があります。

ajax#output呼び出しの結果として、div が変更されます。

Firebug コンソールを開き、スクレイピングしようとしているページを参照し、地理的ゾーンを選択して、ページが更新されているときにコンソールに表示される内容を確認します。

一部の ajax クエリが送信されます。それらを掘り下げて、必要な情報が含まれているものを見つけてください。

于 2013-08-07T06:53:39.040 に答える
0

次のようなコンテンツを表示する前に遅延を使用します

$('#container').delay(800).html(headline);
于 2013-08-07T06:56:12.990 に答える