为什么diffbot看不到这里的价格?

2024-04-29 00:03:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我用diffbot来刮产品。它在大多数网站上都能做得很好,如果不能的话,自定义API通常允许我轻松地调整,直到正确为止。然而,有几个案例让我感到困惑。你知道吗

我知道diffbot不会在自定义API预览窗口中执行javascript,但是对于product端点,它会在向API发出请求时should always execute it(例如,来自Python shell中的diffbot客户端)。你知道吗

足部庇护

对于此网站上的产品,例如https://www.footasylum.com/hugo-boss-three-pack-tshirt-103678/offerPrice字段为空。我可以看到价格在div#priceFrm中,因此我尝试在该字段上编辑并添加一个自定义选择器。但是,即使从pythonshell发出新的API调用,响应也是'offerPrice': ''。你知道吗

这个价格显然是由Javascript增加的,但是为什么diffbot不能处理这个问题呢?我能怎么办?你知道吗

我还可以在<script>中的一些JSON数据中看到我想要的价格。通常我可以从那里把它刮下来,用//script[contains(text(), "dataLayer")]/text()后跟regex。然而,在另一个diffbot自定义字段中,我定义了一个选择器script:contains(dataLayer),甚至这个也是空的。你知道吗

你有什么想法可以通过diffbot获得这个产品的价格吗?你知道吗

耐克

我还想从https://www.nike.com/gb/t/flyknit-trainer-shoe-GBXjsV/AH8396-600那里得到价格

第一个问题是定制API的预览窗口奇怪地给出了500个错误。你知道吗

接下来,我使用一个自定义选择器offerPrice编辑div[data-test=product-price]字段,但是这个字段不会命中任何内容—即使在pythonshell中从客户机调用时也是如此。你知道吗

鞋柜

最后,在这个网站上https://www.footlocker.co.uk/en/p/jordan-1-flight-2-men-shoes-6671?v=314100340604#!searchCategory=alldiffbot似乎无法获得产品图像。你知道吗

图像由“scene7”加载,XPATH可以通过//div[@class="s7thumb"][@data-namespace="s7classic"]/@style找到,然后解析出“backgroundurl”。你知道吗

我至少尝试使用选择器div.s7thumb div[data-namespace=s7classic]用diffbot获取style属性,然后添加属性过滤器“style”,但还是什么也没有返回。你知道吗


Tags: httpsdivcomapidata产品网站style
1条回答
网友
1楼 · 发布于 2024-04-29 00:03:37

在某些情况下,特定元素的特定呈现将被Diffbot的呈现器或目标站点的反阻塞措施阻止。这就是为什么Diffbot具有X-eval功能,允许您将自定义JavaScript添加到将在目标站点上执行的调用中,就像从控制台运行一样。在这种情况下,以下内容会有所帮助:

function() {
    start();
    setTimeout(function() {
        price = document.querySelector("[itemprop="
            Offers "] [itemprop="
            price "]");
        currency = document.querySelector("[itemprop="
            Offers "] [itemprop="
            priceCurrency "]").getAttribute("content");
        price.parentElement.setAttribute("style", "");
        price.parentElement.innerHTML += '<h1 class="thePrice">' + price.innerText + " " + currency + '</h1>';
        setTimeout(function() {
            end();
        }, 500);
    }, 500);
}

这已作为修复应用,现在价格返回。你知道吗

相关问题 更多 >