2017-12-30 21 views
1

Ich habe einfache Frage, weil keine Antwort dafür finden. Eigentlich kann ich Amazons API benutzen, um Informationen über das Produkt von ASIN-Code zu bekommen, aber in diesem Fall kann ich ein einzelnes Bild in verschiedenen Formaten bekommen, mit großem, mittlerem Daumen usw., oder?Amazon API erhalten alle Bilder von Produkt

In meinem Fall möchte ich wissen, wenn es möglich ist, alle Bilder von Produkt zu bekommen, zeige nicht nur 1 Bild in verschiedenen Formaten, wenn ich alle Bilder mit scrapp bekommen kann, aber in diesem Fall möchte ich API verwenden, weil es s mehr sauber und für Shop nicht Probleme mit vielen Anfragen von CURL scrapp mit

Eigentlich ist das ich benutze:

$gallery=htmlentities((string) $item->ImageSets->ImageSet->LargeImage->URL); 

Artikel Struktur:

$item = $xml->Items->Item; 
$title = htmlentities((string) $item->ItemAttributes->Title); 
$url = htmlentities((string) $item->DetailPageURL); 
$image = htmlentities((string) $item->MediumImage->URL); 
$price = htmlentities((string) $item->OfferSummary->LowestNewPrice->Amount); 
$amount=htmlentities((string) $item->OfferSummary->LowestNewPrice->Amount); 
$item->OfferSummary->LowestUsedPrice->Amount); 
$code = htmlentities((string) $item->OfferSummary->LowestNewPrice->CurrencyCode); 
$qty = htmlentities((string) $item->OfferSummary->TotalNew); 
$gallery=htmlentities((string) $item->ImageSets->ImageSet->LargeImage->URL); 

Funktion API-Code:

function getAmazonPrice($region, $asin) 
{ 
global $precioamz; 
global $amountamz; 
global $imageamz; 
global $galeriaamz; 

$xml = aws_signed_request($region, array(
"Operation" => "ItemLookup", 
"ItemId" => $asin, 
"IncludeReviewsSummary" => False, 
"ResponseGroup" => "Medium,OfferSummary", 
)); 

$item = $xml->Items->Item; 
$title = htmlentities((string) $item->ItemAttributes->Title); 
$url = htmlentities((string) $item->DetailPageURL); 
$image = htmlentities((string) $item->MediumImage->URL); 
$price = htmlentities((string) $item->OfferSummary->LowestNewPrice->Amount); 
$amount=htmlentities((string) $item->OfferSummary->LowestNewPrice->Amount); 
$item->OfferSummary->LowestUsedPrice->Amount); 
$code = htmlentities((string) $item->OfferSummary->LowestNewPrice->CurrencyCode); 
$qty = htmlentities((string) $item->OfferSummary->TotalNew); 
$gallery=htmlentities((string) $item->ImageSets->ImageSet->LargeImage->URL); 

/// $gallery=Images,ItemAttributes,Variations,VariationImages 


if ($qty !== "0") 
{ 
$response = array(
"code" => $code, 
"price" => number_format((float) ($price/100), 2, '.', ''), 
"image" => $image, 
"url" => $url, 
"title" => $title, 
"amount" => $amount, 
"galeria" => $gallery 
); 
} 

$precioamz=$response['price']; 
$amountamz=$response['amount']; 
$imageamz=$response['image']; 
$galeriaamz=$response['galeria']; 

//return $response; 
} 

function getPage($url) 
{ 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$html = curl_exec($curl); 
curl_close($curl); 
return $html; 
} 

Aber nur 1 Bild erhalten, und ich möchte alle Bilder von diesem Produkt erhalten, thank's für die Hilfe, in Bezug auf

Antwort

0

Wenn ich nicht falsch verstanden habe Ihre Anforderung, ich nehme an, Ihre Amazon API XML respsnse ist so etwas, das ich von der Amazon API Dokumentation Seite https://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_RetrievingImages.html genommen habe. SO können Sie auf diese Weise versuchen, alle Bild-URLs zu erhalten.

$xmlstr = <<<XML 
<Item> 
    <ASIN>B004HO6I4M</ASIN> 
    <SmallImage> 
    <URL> 
     https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL75_.jpg 
    </URL> 
    <Height Units="pixels">75</Height> 
    <Width Units="pixels">56</Width> 
    </SmallImage> 
    <MediumImage> 
    <URL> 
     https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL160_.jpg 
    </URL> 
    <Height Units="pixels">160</Height> 
    <Width Units="pixels">120</Width> 
    </MediumImage> 
    <LargeImage> 
    <URL> 
     https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL500_.jpg 
    </URL> 
    <Height Units="pixels">500</Height> 
    <Width Units="pixels">375</Width> 
    </LargeImage> 
    <ImageSets> 
    <ImageSet Category="primary"> 
     <SwatchImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL30_.jpg 
     </URL> 
     <Height Units="pixels">30</Height> 
     <Width Units="pixels">22</Width> 
     </SwatchImage> 
     <SmallImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL75_.jpg 
     </URL> 
     <Height Units="pixels">75</Height> 
     <Width Units="pixels">56</Width> 
     </SmallImage> 
     <ThumbnailImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL75_.jpg 
     </URL> 
     <Height Units="pixels">75</Height> 
     <Width Units="pixels">56</Width> 
     </ThumbnailImage> 
     <TinyImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL110_.jpg 
     </URL> 
     <Height Units="pixels">110</Height> 
     <Width Units="pixels">82</Width> 
     </TinyImage> 
     <MediumImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL160_.jpg 
     </URL> 
     <Height Units="pixels">160</Height> 
     <Width Units="pixels">120</Width> 
     </MediumImage> 
     <LargeImage> 
     <URL> 
      https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL500_.jpg 
     </URL> 
     <Height Units="pixels">500</Height> 
     <Width Units="pixels">375</Width> 
     </LargeImage> 
    </ImageSet> 
    </ImageSets> 
</Item> 
XML; 

$images = new SimpleXMLElement($xmlstr); 
$image_set = $images->ImageSets->ImageSet; 
$all_images = []; 
foreach($image_set->children() as $key=>$value){ 
    $all_images[$key] =trim((string)$value->URL); 
} 
print '<pre>'; 
print_r($all_images); 
print '</pre>'; 

Ausgang:

Array 
(
    [SwatchImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL30_.jpg 
    [SmallImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL75_.jpg 
    [ThumbnailImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL75_.jpg 
    [TinyImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL110_.jpg 
    [MediumImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL160_.jpg 
    [LargeImage] => https://ecx.images-amazon.com/images/I/519SgX2wwDL._SL500_.jpg 
) 
+0

@Jos lassen Sie mich wissen, ist das für Sie gearbeitet oder nicht? –

+0

Nein, in meiner Frage spreche ich über alle Bilder von Produkt, wenn Sie Produkt in Amazon gehen, können Sie verschiedene Bilder sehen, von API erhalten Sie nur 1 Bild mit verschiedenen Größen oder Auflösungen, wie Sie bis hier setzen können, aber Produkte haben Galerie von Bilder, von API ich will zeigen alle Bilder des Produkts nicht das gleiche Bild, tatsächlich kann ich alle Bilder mit Parser laden laden DOM-Produkt beim Laden der Website und zeigen Sie diese Bilder und speichern in db, aber das Problem ist, dass von Amazon API zeige mir nur ein einzelnes Bild, die anderen Bilder ich weiß nicht, ob es möglich ist, nur die Amazon API zu zeigen – Jos

0

alle Bilder holen Sie verwenden müssen, oder fügen Sie

Images,ItemAttributes,Variations,VariationImages als Werte für die Anforderungstaste ResponseGroup wenn Sie aws_signed_request() rufen

Ich würde natürlich eine andere Antwort von der erwarten, die Sie jetzt bekommen, also Ihre Res Der Parsing-Code von ponse muss möglicherweise geändert werden.

Überprüfen Sie die Antwort und bearbeiten Sie Ihren Code entsprechend.

Verwandte Themen