Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请求返回的结果少于我的爬虫程序中页面的实际结果_Javascript_Http_Web Crawler - Fatal编程技术网

Javascript 请求返回的结果少于我的爬虫程序中页面的实际结果

Javascript 请求返回的结果少于我的爬虫程序中页面的实际结果,javascript,http,web-crawler,Javascript,Http,Web Crawler,当我向你提出请求时。在我的浏览器中,返回所有结果,在本例中为35 但如果我使用来自NodeJS或Postman的请求模块发出此请求,我只收到来自market online的20个结果产品,所有页面都会出现这种情况 我已经在html//div[@class='name']///a//text中应用了这个xpath 有人知道为什么会发生这种情况吗?这是因为加载页面后,会发送一个Ajax请求以获取产品列表,并在获取此产品列表数据后替换页面内容 以下是一些详细说明: 当浏览器访问您提供的浏览器时。发送G

当我向你提出请求时。在我的浏览器中,返回所有结果,在本例中为35

但如果我使用来自NodeJS或Postman的请求模块发出此请求,我只收到来自market online的20个结果产品,所有页面都会出现这种情况

我已经在html//div[@class='name']///a//text中应用了这个xpath


有人知道为什么会发生这种情况吗?

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

以下是一些详细说明:

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

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

站点中的脚本将获得这35个结果并替换页面内容。这就是为什么在浏览器中可以看到35个结果。
为了在爬虫程序中获得真正的结果,它需要将POST HTTP请求发送到https://www.mercadoline.com.br/salvador/index.php?route=module/journal2_super_filter/products&module_id=13,而不是页面地址。

你说得对。谢谢你的回复。这将非常有用。