2011-11-26 9 views
13

Quando si utilizza il servizio web di Amazon per ottenere le informazioni di qualsiasi prodotto, c'è un modo diretto per ottenere il punteggio medio del cliente (1-5 stelle)? Qui ci sono i parametri che sto usando:API di Amazon Product Advertising: ottieni la valutazione media del cliente

Service=AWSECommerceService 
Version=2011-08-01 
Operation=ItemSearch 
SearchIndex=Books 
Title=A Game of Thrones 
ResponseGroup=Large 

mi si aspetterebbe di avere un rating cliente di 4.5 e recensioni in totale di 2177. Ma invece ottengo il seguente nella risposta.

<CustomerReviews><IFrameURL>http://www.amazon.com/reviews/iframe?...</IFrameURL></CustomerReviews> 

C'è un modo per ottenere la valutazione complessiva del cliente, oltre che per reading the <IFrameURL/> value, facendo un altro richiesta HTTP per quella pagina delle opinioni, e quindi screen scraping il codice HTML? Questo approccio è fragile poiché Amazon potrebbe facilmente modificare la struttura della pagina delle recensioni che potrebbe bloccare la mia applicazione.

risposta

4

Per quanto ne so, Amazon ha cambiato la sua API quindi non è più possibile ottenere le informazioni di revisione. Se si controlla il this Link sais nota:

A partire dal 8 novembre 2010, solo l'URL iframe viene restituito nella richiesta contenuti.

Tuttavia, testando con i parametri utilizzati per ottenere l'Iframe sembra che ora anche l'Iframe non funzioni più. Pertanto, anche nell'ultimo riferimento API nel capitolo "Motivare i clienti all'acquisto" la parte "recensioni" è completamente mancante.

Tuttavia: Dal momento che io sono molto interessato anche se ancora possibile in qualche modo per ottenere le informazioni reviewrank - magari anche non utilizzando API di Amazon, ma un'API concorrenti per ottenere critica Informazioni rango - ti ha installato una taglia Se qualcuno può fornire qualcosa di utile su questo. Bounty sarà impostato in this topic in due giorni.

2

È possibile recuperare l'url di revisione iframe e quindi utilizzare css per posizionarlo in modo che venga visualizzata solo la valutazione a stelle. Non è l'ideale dato che non stai ricevendo dati grezzi, ma è un modo semplice per aggiungere la valutazione alla tua pagina.

Esempio di questo in azione - http://spamtech.co.uk/positioning-content-inside-an-iframe/

+0

Bene, questo getta l'idea di uno schema XML di Google direttamente dalla finestra. Immagino che inserirò manualmente la valutazione sui progetti dei clienti. – Imperative

0

Amazon ha il supporto completamente rimosso per l'accesso ai rating/rivedere le informazioni da loro API. I documenti menzionano un elemento di risposta sotto forma di valutazione del cliente, ma anche questo non funziona.

commerciale Google utilizzando Viewpoints per alcune recensioni e other sources

17
+0

Sarà questo? Spero che non si romperà in futuro! – Micro

+0

il tuo IP non verrebbe inserito nella lista nera se si raschia questo collegamento? – rockyraw

+0

Questo è un modo possibile, ma solo per alcuni graffi. Quando cerchi più oggetti, quella pagina richiederà un captcha per bloccare i bot.Forse devi raschiare l'URL iframe dalla prima richiesta di Amazon-API – Jokus

2

Ecco uno script VBS che raschiare il rating. Incolla il codice qui sotto in un file di testo, rinominalo in Test.vbs e fai doppio clic per eseguirlo su Windows.

sAsin = InputBox("What is your ASIN?", "Amazon Standard Identification Number (ASIN)", "B000P0ZSHK") 
if sAsin <> "" Then 
    sHtml = SendData("http://www.amazon.com/gp/customer-reviews/widgets/average-customer-review/popover/ref=dpx_acr_pop_?contextId=dpx&asin=" & sAsin) 
    sRating = ExtractHtml(sHtml, "<span class=""a-size-base a-color-secondary"">(.*?)<\/span>") 
    sReviews = ExtractHtml(sHtml, "<a class=""a-size-small a-link-emphasis"".*?>.*?See all(.*?)<\/a>") 
    MsgBox sRating & vbCrLf & sReviews 
End If 

Function ExtractHtml(sHtml,sPattern) 
    Set oRegExp = New RegExp 
    oRegExp.Pattern = sPattern 
    oRegExp.IgnoreCase = True 
    Set oMatch = oRegExp.Execute(sHtml) 
    If oMatch.Count = 1 Then 
     ExtractHtml = Trim(oMatch.Item(0).SubMatches(0)) 
    End If 
End Function 

Function SendData(sUrl) 
    Dim oHttp 'As XMLHTTP30 
    Set oHttp = CreateObject("Msxml2.XMLHTTP") 
    oHttp.open "GET", sUrl, False 
    oHttp.send 
    SendData = Replace(oHttp.responseText,vbLf,"") 
End Function 
Problemi correlati