1

目的は、Web サイトが Ajax 呼び出しを終了した後で、Web サイトからデータを取得することです。現在、ページが最初に読み込まれるときにデータが取得されています。しかし、必要なデータは ajax 呼び出しの後にロードされる div 内にあります。

要約すると、シナリオは次のとおりです。

Web ページは、C# コード内で渡されたいくつかのパラメーターを使用して呼び出されます (現在、c# には CsQuery を使用しています)。リクエストが送信されると、ページが開き、「読み込み中」の画像が表示され、数秒後に必要なデータが取得されます。ただし、cSQuery コードは、「読み込み中」の画像を含む最初のページ コンテンツを取得します。

コードは次のとおりです

UrlBuilder ub = new UrlBuilder("<url>")
       .AddQuery("departure", "KHI")
       .AddQuery("arrival", "DXB")
       .AddQuery("queryDate", "2013-03-28")
       .AddQuery("queryType", "D");

        CQ dom = CQ.CreateFromUrl(ub.ToString());
        CQ availableFlights = dom.Select("div#availFlightsDiv");

        string RenderedDiv = availableFlights["#availFlightsDiv"].RenderSelection();
4

2 に答える 2

4

サイトを「スクレイプ」すると、Webサーバーに電話をかけ、それが提供するものを取得します。ターゲットサイトのDOMがjavascript(ajaxまたはその他)によって変更された場合、スクレイピングを実行しているマシン上のある種のブラウザーエンジンにコンテンツをロードしない限り、そのコンテンツを取得することはありません。呼び出します。

于 2013-03-14T11:16:24.113 に答える
1

ほぼ 1 年前の質問ですが、既に回答を得ているかもしれません。しかし、ここでこの素晴らしいプロジェクト、SimpleBrowser について言及したいと思います。

https://github.com/axefrog/SimpleBrowser

DOM を最新の状態に保ちます。

于 2014-08-21T04:40:36.230 に答える