html列表分页pagesize的求解释

以下网站,结果列表是分页显示的,默认每页15条,可选50 100条,无论人工选择哪个pagesize,网址链接都不变。

广西政府采购网站
http://zfcg.gxzf.gov.cn/ZcyAnnouncement/ZcyAnnouncement1/index.html?districtCode=450600

我的需求是,用程序打开此页面,pagesize 为100,如何实现。这个问题就是此页面的pagesize是如何实现的?

我使用 VC MFC CDHtmlDialog 类,在对话框里打开了网页,请教有此经验的大咖指点下,如何使用AJAX,改变pagesize

可以F12打开控制台里面的网络,可以看到重新选择条数,就会重新发送一次网络请求,只需要在网络请求代码那里,把请求参数里面的pageSize改为100即可;
应该是用了AJAX,AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

img

如果有用请采纳,专注前端开发,有什么不懂的可以问我喔

你可以在控制台中查看每次点击是所请求的数据:

img

人工选择pagesize的时候会将pagesize附到请求中的
比如:

let url  = "http://zfcg.gxzf.gov.cn/front/search/category";
// pagesize为每页的显示数量,pageNo为页码,你可以根据你的需求出入pageSize和pageNo
let pageSize = 1000;
let pageNo = 3;
let payload = {
  districtCode: ["450600"], 
  categoryCode: "ZcyAnnouncement1",
  pageSize: pageSize, 
  pageNo: pageNo
};

// 通过ajax请求数据
$.ajax({
  url: url,
  data: payload,
  method: "POST",
  success: response => {
  }
})

您好,根据您的描述,这个网站,选择页码时,网址不会变。说明这个页面的数据是动态加载的。也就是说这个页面的请求方式是一个ajax的动态请求,在ajax请求中将pagesize参数传给了后台请求数据。后台查询到数据后返回给那个ajax方法,在方法里面动态的将页面上的旧数据替换掉,将新数据显示出来。所以这中加载数据的方式,网址是不会变的。所有需要用到的参数不会放在网址中,而且放在那个ajax方法中。如果您还不是很明白,建议重点学一下ajax请求。望采纳哦
一个ajax请求的例子:


$.post('http://XXX',
               {    // 向后台传递的数据            
              pagesize: 100                          
              },            
           function (res) {    // 回调函数                                             console.log(res);     //获取后台数据更新页面     
     }

该回答引用ChatGPT
以下是一个使用 Python 的示例代码,用于从该网站上获取每页100个结果:


import requests

url = 'http://zfcg.gxzf.gov.cn/ZcyAnnouncement/ZcyAnnouncement1/index.html?districtCode=450600&pageSize=100'
response = requests.get(url)

# 处理 response 中的数据
# ...

上述代码使用了 Python 的 requests 库向网站发送 GET 请求,并将 pageSize 设置为 100。注意,该网站可能有反爬虫机制,建议在代码中添加合适的请求头信息和访问频率控制,以防止被封禁或其他问题。另外,处理返回的 response 中的数据需要进一步的代码实现。

需要使用编程语言javascript进行自动化操作,不然无论你在网址中指定哪个页面大小参数,网址链接都不会更改

一般只有get请求才会将参数拼接到请求的URL上,post请求都是放在请求体里面,你这个应该就是一个post请求,pageSize是放在请求包体里面的
你可以f12看下浏览器网络那一栏是不是发了post请求。

另外这个应该是个政府网站,如果想通过程序获取一些信息的话,注意程序不要出问题,频繁的访问导致网站出问题,否则可能会有一定的风险,前两年有过类似的案例的。

如果你有这个系统的代码可以修改默认每页的条数就行了。

要通过 AJAX 改变网页的 pagesize,需要先了解该网站的请求接口和参数。

打开该网站,并在 Chrome 浏览器的开发者工具中打开 Network 标签页,切换到 All 面板,选择 "XHR" 过滤器,然后点击网站的“15”选项卡(pagesize),可以看到一条请求记录,该请求记录的 URL 类似于:http://zfcg.gxzf.gov.cn/ZcyAnnouncement/ZcyAnnouncement1/index.html?page=1&rows=15&districtCode=450600%EF%BC%8C%E5%85%B6%E4%B8%AD%E7%9A%84 page=1 表示当前页数,rows=15 表示每页的条数。

然后,选择该请求记录,点击右侧的 Headers 标签,可以看到该请求记录的 Request Headers 中包含了一个名为 X-Requested-With 的参数,它的值为 XMLHttpRequest,这意味着该请求是通过 AJAX 发送的。

现在你可以使用 AJAX 来发送类似的请求,以便在代码中更改 pagesize。

以下是一个示例代码,使用 jQuery 的 AJAX 函数实现:

$.ajax({
    url: 'http://zfcg.gxzf.gov.cn/ZcyAnnouncement/ZcyAnnouncement1/index.html',
    type: 'GET',
    data: {
        'page': 1, // 当前页数
        'rows': 100, // 每页的条数
        'districtCode': 450600 // 区域代码
    },
    beforeSend: function (xhr) {
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); // 设置 X-Requested-With 参数
    },
    success: function (data) {
        // 请求成功后的处理逻辑
    },
    error: function (xhr, textStatus, errorThrown) {
        // 请求出错后的处理逻辑
    }
});

该代码将向指定的 URL 发送一个 GET 请求,并将参数 page 和 rows 设置为 1 和 100。在 beforeSend 回调函数中,设置了 X-Requested-With 参数,以模拟 AJAX 请求。当请求成功时,可以在 success 回调函数中对返回的数据进行处理。如果请求出错,则可以在 error 回调函数中进行错误处理。

在 VC MFC CDHtmlDialog 类中,你可以使用类似的 AJAX 调用代码,将其嵌入 HTML 页面中的 JavaScript 中,以更改网页的 pagesize。你可以使用 C++ 代码中的函数将 JavaScript 代码嵌入 HTML 页面中:

CString jsCode = "document.getElementById('pagesize-selector').value = 100;";
GetHtmlDocument()->parentWindow->execScript(jsCode, "javascript");

该代码将在 HTML 页面中查找 ID 为 pagesize-selector 的元素,并将其值设置为 100,从而更改 pagesize。
如果对您有帮助,请给与采纳,谢谢。

以下答案基于ChatGPT与GISer Liu编写:

该页面中的分页实现可能是基于 AJAX 技术实现的。通过 AJAX 技术,可以在不刷新整个页面的情况下,向服务器请求数据,实现部分页面内容的更新。在改变 pageSize 时,可能是通过向服务器发送 AJAX 请求,从而获取指定数量的数据并展示在页面上。因此,可以使用 JavaScript 发送 AJAX 请求,改变 pageSize,然后更新页面数据。

以下是一个简单的 JavaScript 示例,演示如何使用 AJAX 改变 pageSize:

javascript

function changePageSize(pageSize) {
    $.ajax({
        url: "http://zfcg.gxzf.gov.cn/ZcyAnnouncement/ZcyAnnouncement1/index.html",
        type: "GET",
        data: {pageSize: pageSize},
        success: function(data) {
            // 更新页面数据
            $("#result-list").html(data);
        },
        error: function(xhr, status, error) {
            console.log("Error: " + error);
        }
    });
}

在该示例中,使用 jQuery 中的 AJAX 函数 $.ajax() 发送 GET 请求,并将 pageSize 作为请求参数。在请求成功时,更新页面中 id 为 result-list 的元素的内容。

需要注意的是,该方法的可行性取决于该页面是否开放了接口供外部调用。另外,如需将数据提取出来或植入使用,可能需要进行反爬虫处理。