2017-09-16 19 views
0

状況:私はウェブページをスクラップするコードを作成します。テンプレート10に基づいたUWPアプリケーションで、MVVMとHTML Agility Packを使用します。スクレイプされたページは、ソースWebページの結果リストに戻ることができる結果(ページ)のリストです。すべてが掻き取られる、すなわち、そのようなリストを処理するウェブ結果およびウェブコマンドのリスト。廃棄されたWebページの次/先行ページを自動的に読み込むための最良のアプローチ

リクエスト:「前のページ」と「次のページ」のボタンを削除します。アイデアは、現在ロードされている結果リストのトップまたはボトム(Webページ)に移動する場合に、ページまたは後方ページをロードする要求を自動的に送信する必要があります。

注意:私は、表示のリストの上部または下部にいるときにメッセージを表示できます。私は、ViewModelのリストの前と次のページをロードするより良い方法があると感じています。

私はどのようにそれを行うには感謝します。 すべての道路がローマにつながっていますので、最善の方法を教えてください。事前に助けていただきありがとうございます。

+1

「スクラップ」とは「スクレーピング」を意味し、「スクラップ」は「スクラップ」を意味しますか? – mjwills

+0

一歩を踏み出し、解決しようとしている根本的な問題について説明してください。言い換えれば、**なぜ**あなたはウェブページをまったく削っていますか? – mjwills

+0

@ mjwillsこのケースでは、ファイルのリストを表示するページです。スクレイピングページとは、すべてのファイルの説明、アイコン、リンクがリストに格納されていることを意味し、アプリケーションインターフェイスやコマンド(次のページ、前のページ、順番どおりなど)でWebコンテンツとして表示されます。後でウェブリクエスト。私は、Webコンテンツを表示し、Webリンクを自分のアプリケーションのコマンドとして使用するためにページを削っています。 –

答えて

1

私は、表示のリストの上部または下部にいるときにメッセージを表示できます。

リストが最上部または最下部にあるときにメッセージが表示される場合は、グローバル変数を要求されたアドレスとして定義し、変数をページインデックスとして宣言できます。たとえば、次のようになります。http://www.test.com?page= {0}

次に、「トップ」または「ボトム」メッセージが表示されたら、そのアドレスにHTTPリクエストを送信し、返されたコンテンツを取得できます。

private int pageIndex = 0; 
private string address = @"http://www.test.com?page={0}"; 

private async void GetPreviousPageContent() 
{ 
    pageIndex--; 
    Uri uri = new Uri(string.Format(address,pageIndex)); 
    HttpClient client = new HttpClient(); 
    var response = await client.GetAsync(uri); 
} 

private async void GetNextPageContent() 
{ 
    pageIndex++; 
    Uri uri = new Uri(string.Format(address, pageIndex)); 
    HttpClient client = new HttpClient(); 
    var response = await client.GetAsync(uri); 
} 

ここでは別の提案があります。リストビューには2つの関数を実装できます。 Pull to refreshおよびISupportIncrementalLoading。リストビューが一番上にスクロールしてそれをプルダウンすると、特定のイベントが発生します。この場合、HTTPリクエストを送信して前のページのコンテンツを取得できます。リストビューが下にスクロールすると、ISupportIncrementalLoadingのLoadMoreItemsAsyncメソッドが実行されます。このメソッドでは、次のページのコンテンツを取得できます。このように、リクエストアドレスとページインデックスとして2つの変数を宣言する必要があります。

+0

私は "ISupportIncrementalLoading"インターフェイスを使用することを好む、よりプロフェッショナルな方法だと思われます。 –

関連する問題