请求返回的结果少于我的抓取工具中的页面

时间:2017-05-17 15:36:36

标签: javascript http web-crawler

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这是因为在加载页面之后,会发送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块。

  3. 网站中的脚本获取这35个结果并替换页面内容。这就是为什么你在浏览器中看到35个结果的原因。
  4. 要在抓取工具中获得真实结果,需要向POST发送https://www.mercadoline.com.br/salvador/index.php?route=module/journal2_super_filter/products&module_id=13 HTTP请求,而不是页面地址。