2011-11-26 9 views
13

Al usar el servicio web de Amazon para obtener la información de algún producto, ¿hay una manera directa de obtener la calificación promedio de clientes (de 1 a 5 estrellas)? Estos son los parámetros que estoy usando:API de publicidad de productos de Amazon: obtenga una calificación promedio de clientes

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

Yo esperaría que tenga una puntuación de los usuarios de 4,5 y opiniones en total de 2177. Pero en vez me sale el siguiente en la respuesta.

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

¿Hay una manera de obtener la calificación global del cliente, además de reading the <IFrameURL/> value, haciendo otra petición HTTP de la página de comentarios, y luego raspar la pantalla de HTML? Ese enfoque es frágil, ya que Amazon podría cambiar fácilmente la estructura de la página de reseñas, lo que arruinaría mi aplicación.

Respuesta

4

Por lo que yo sé, Amazon cambió su API así que no es posible más para obtener la información reviewrank. Si marca this Link la nota EFS:

Hasta el 8 de noviembre del 2010, sólo el URL iframe se devuelve en la solicitud contenido.

Sin embargo, probando con los parámetros que utilizó para obtener el Iframe parece que ahora ni siquiera el Iframe funciona. Por lo tanto, incluso en la última referencia de API en el capítulo "Motivar a los clientes a comprar", la parte "reseñas" falta por completo.

Sin embargo, como también estoy muy interesado si todavía es posible obtener la información de reviewrank, tal vez incluso sin usar la API de Amazon pero la API de un competidor para obtener información de rango de revisión, estableceré una recompensa si alguien puede proporcionar algo útil sobre eso. Bounty se establecerá en this topic en dos días.

2

se puede agarrar la opinión iframe url y luego usar CSS para posicionarlo de manera que sólo los espectáculos de estrellas. No es ideal, ya que no obtiene datos brutos, pero es una manera fácil de agregar la calificación a su página.

Muestra de esto en acción - http://spamtech.co.uk/positioning-content-inside-an-iframe/

+0

Bueno, eso arroja la idea de un esquema XML de Google al salir de la ventana. Supongo que ingresaré manualmente la calificación en proyectos de clientes. – Imperative

0

Amazon tiene soporte completamente eliminado para acceder calificación/revisar la información de su API. Los documentos mencionan un elemento de respuesta en forma de calificación de los clientes, pero eso tampoco funciona.

comercial usando Google Viewpoints de algunos comentarios y other sources

17
+0

¿Esto durará? ¡Espero que no se rompa en el futuro! – Micro

+0

¿No sería su IP incluida en la lista negra si raspa tal enlace? – rockyraw

+0

Esta es una manera posible, pero solo para algunos rasguños. Cuando busca múltiples elementos, esa página solicitará un captcha para bloquear bots.Tal vez tengas que raspar la url del iframe de la primera solicitud de amazon-api – Jokus

2

Aquí es un script VBS que raspar la calificación. Pegue el siguiente código en un archivo de texto, cámbiele el nombre a Test.vbs y haga doble clic para ejecutarlo en 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 
Cuestiones relacionadas