[英]Why doesn't diffbot see the price here?
我正在使用 diffbot 來抓取產品。 它在大多數網站上都能解決問題,如果沒有,自定義 API 通常允許我輕松調整,直到正確為止。 然而,有幾個案例讓我感到困惑。
我知道 diffbot 不會在自定義 API 預覽窗口中執行 javascript,但對於product
端點,它應該始終在向 API 發出請求時執行它(例如,來自 Python shell 中的 diffbot 客戶端)。
足部庇護
對於本網站上的產品,例如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錯誤。
接下來,我使用div[data-test=product-price]
的自定義選擇器編輯offerPrice
字段,但是該字段沒有命中任何內容 - 即使在 Python shell 中從客戶端調用時也是如此。
儲物櫃
最后在這個網站上https://www.footlocker.co.uk/en/p/jordan-1-flight-2-men-shoes-6671?v=314100340604#!searchCategory=all diffbot 似乎無法獲得產品圖片。
圖片由“scene7”加載,用XPATH可以找到//div[@class="s7thumb"][@data-namespace="s7classic"]/@style
然后解析出“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);
}
這已被用作修復,現在價格返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.