gpt4 book ai didi

javascript - 请求返回的结果少于我的爬网程序中页面实际的结果

转载 作者:行者123 更新时间:2023-12-03 04:18:58 25 4
gpt4 key购买 nike

当我从 Mercadoline 发出请求时。在“我的浏览器”中返回所有结果,在本例中为 35。

但是,如果我使用 NodeJS 或 Postman 的请求模块发出此请求,我只会收到 20 个结果(来自在线市场的产品),并且所有页面都会发生这种情况。

我已在 html //div[@class='name']//a//text() 中应用了此 xpath。

有人知道为什么会这样吗?

最佳答案

这是因为页面加载后,会发送Ajax请求来获取产品列表,并在获取到产品列表数据后替换页面内容。

以下是一些详细说明:

  1. 当浏览器访问URL时你提供的。发送 GET 请求并检索 HTML 文件。在此文件中,有 20 个结果。在 Node.js 或 Postman 中,这正是发生的情况:检索 HTML 资源,仅此而已。

  2. 在浏览器中,页面加载后,会发送 Ajax 请求: POST https://www.mercadoline.com.br/salvador/index.php?route=module/journal2_super_filter/products&module_id =13。 Ajax 响应返回包含 35 个结果的 HTML block 。

  3. 网站中的脚本获取这 35 个结果并替换页面内容。这就是您在浏览器中看到 35 个结果的原因。

要在爬虫中获取真实结果,需要向 https://www.mercadoline.com.br/salvador/index.php?route= 发送 POST HTTP 请求module/journal2_super_filter/products&module_id=13,而不是页面的地址。

关于javascript - 请求返回的结果少于我的爬网程序中页面实际的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com