当我从Mercadoline提出请求时。在我的浏览器中返回所有结果,在本例中为35。
但如果我使用NodeJS或Postman的请求模块发出此请求,我只收到20个结果(来自在线市场的产品),所有这些都会发生这种情况。
我已在html //div[@class='name']//a//text()
中应用此xpath。
有人知道为什么会这样吗?
答案 0 :(得分:1)
这是因为在加载页面之后,会发送Ajax请求以获取产品列表,并在获取此产品列表数据后替换页面内容。
以下是一些详细说明:
当浏览器访问您提供的URL时。发送GET
请求并检索HTML文件。在此文件中,有20个结果。在Node.js或Postman中,这正是发生的事情:检索HTML资源,仅此而已。
在浏览器中,加载页面后,会发送一个Ajax请求:POST https://www.mercadoline.com.br/salvador/index.php?route=module/journal2_super_filter/products&module_id=13
。 Ajax响应返回包含35个结果的HTML块。
要在抓取工具中获得真实结果,需要向POST
发送https://www.mercadoline.com.br/salvador/index.php?route=module/journal2_super_filter/products&module_id=13
HTTP请求,而不是页面地址。