自动加载已抓取网页的 next/prevous 页面的最佳方法

best approach to automatically load next/prevous page of scraped web page

情况:我编写代码来抓取网页。它基于模板 10 并使用 MVVM 和 HTML Agility Pack 的 UWP 应用程序。抓取的页面是我可以向前移动的结果(页面)列表,返回源网页上的结果列表。所有内容都被抓取,即网络结果列表和处理此类列表的网络命令。

请求:我想删除按钮“上一页”和“下一页”。一个想法需要自动发送请求以向前加载页面或向后加载页面,以防我移动到当前加载的结果列表(网页)的顶部或底部。

注意:当我在视图中位于列表的顶部或底部时,我可以显示一条消息。我感觉有一种更好的方法可以在 ViewModel 中加载列表的上一页和下一页。

如有任何建议,我将不胜感激。 条条大路通罗马,请告诉我最好的路。预先感谢您的帮助。

I am able to display a message when I am on the top or bottom of the list in View.

如果当列表位于顶部或底部时仍能收到消息,则可以定义一个全局变量作为请求的地址,并声明一个变量作为页面索引。例如:http://www.test.com?page={0}

然后,当您收到 "top" 或 "bottom" 消息时,您可以将 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);
}

在这里,我有另一个建议给你。您可以为您的列表视图实现两个功能。 Pull to refresh and the ISupportIncrementalLoading。当列表视图滚动到顶部并下拉时,它会触发一个特定的事件,在这个事件中,您可以发送 HTTP 请求来获取上一页的内容。当列表视图滚动到底部时,ISupportIncrementalLoading 的LoadMoreItemsAsync 方法将被触发,在该方法中,您可以获取下一页的内容。这样的话,还是需要声明两个变量,分别是请求地址和页面索引。