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

我正在使用diffbot刮擦产品。它可以在大多数站点上正常运行,如果没有,自定义API通常可以让我轻松调整直到正确。但是,有些情况让我感到困惑。

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

足部庇护

对于本网站上的产品,例如https://www.footasylum.com/hugo-boss-three-pack-tshirt-103678/,offerPrice字段为空。我可以看到价格在div#priceFrm中,因此我尝试在该字段上编辑并添加自定义选择器以达到这种效果。但是,即使从Python Shell进行新的API调用,响应也是'offerPrice': ''

这个价格显然是由Javascript增加的,但是diffbot为什么不能处理呢?我该怎么办?

我还可以在<script>内的一些JSON数据中看到所需的价格。正常情况下,我可以从此处刮起它,并使用//script[contains(text(), "dataLayer")]/text()后跟一个正则表达式。但是,在另一个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]字段,但是该字段没有任何作用-即使在Python Shell中从客户端调用时也是如此。

脚锁

最终,在此网站上,https://www.footlocker.co.uk/en/p/jordan-1-flight-2-men-shoes-6671?v=314100340604#!searchCategory=all diffbot似乎无法获得产品映像。

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

我尝试使用选择器div.s7thumb div[data-namespace=s7classic]至少使用diffbot获得样式属性,然后添加属性过滤器“样式”,但再次没有返回任何内容。

参考方案

在某些情况下,某些元素的特定渲染将被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);
}

这已被应用为修复,价格现在返回。

JavaScript中的字符串评估函数 - javascript

            JavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Python-spidermonkey:如何获取行号。错误 - javascript

如何检索发生错误的行号?在下一个脚本中,该行输出(作为最后一次加注的结果),但是没有行号。在JS错误对象中。from spidermonkey import Runtime, JSError runtime = Runtime() context = runtime.new_context() try: context.execute( "func…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

查找我的浏览器生成的javascript变量的当前值 - javascript

我正在尝试训练神经网络使用进化计算来玩基于浏览器的游戏,为此,我需要跟踪游戏得分。仅使用html,css和javascript创建游戏,并且游戏得分保存在我的浏览器运行的js脚本中的特定变量中。播放时,该变量的值当然会发生变化,并且在我的浏览器中是本地的。有什么方法可以在Python脚本中跟踪该变量的值? (如果我需要使用其他编程语言,我也愿意尝试一下!)编…