Mam problem z interfejsem API serwisu eBay, w szczególności z usługą lub operacją „findItemsByKeywords”, ponieważ w zależności od adresu URL, do którego kierujesz zapytanie o powrót do wyników (itemSearchURL), różni się on bardzo od tego, który zwraca mi, gdy drukowanie na ekranie. Następnie pokażę Ci mój kod.

print_r($ebay= ebayapi("Xiaomi Redmi Note 7"));
function ebayapi($keyword) {
// API request variables
$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';  // URL to call
$version = '1.13.0';  // API version supported by your application
$appid = '';  // Replace with your own AppID
$globalid = 'EBAY-ES';  // Global ID of the eBay site you want to search (e.g., EBAY-DE)

$safequery = urlencode($keyword);  // Make the query URL-friendly
$i = '0';  // Initialize the item filter index to 0

// Construct the findItemsByKeywords HTTP GET call 
$apicall = "$endpoint?";
$apicall .= "OPERATION-NAME=findItemsByKeywords";
$apicall .= "&SERVICE-VERSION=$version";
$apicall .= "&SECURITY-APPNAME=$appid";
$apicall .= "&GLOBAL-ID=$globalid";
$apicall .= "&keywords=$safequery";
$apicall .= "&categoryId=9355";
$apicall .= "&bestOfferEnabled=true";
$apicall .= "&SortOrderType=StartTimeNewest";
$apicall .= "&paginationInput.entriesPerPage=3";

$resp = simplexml_load_file($apicall);

$fiction=array();

if ($resp->ack == "Success") {
  $results = '';

  foreach($resp->searchResult->item as $item) {
    $price  = $item->sellingStatus->currentPrice;
    $title = $item->title;
    $pic   = $item->galleryURL;
    $url= $item->viewItemURL;
$title2=remove_accents($title);
$price2=(float)$price;
$uid= uniqid(about);
$uid2= uniqid(price);
 $fiction[$uid]=  array('price' => $price2,
        'priceOld' => '0',
        'percentageSaved' => 0,
        'currency' => '€',
        'currencyCode' => 'EUR',
"manufacturer" => "",
"category" => "",
"categoryPath" => "",
"merchant" => "",
"logo" => "",
"domain" => "ebay.com",
"rating" => 4.5,
"reviewsCount"=>"",
"availability"=>"",
"orig_url"=>"$url",
"ean"=>"",
"upc"=>"",
"sku"=>"",
"isbn"=>"",
"woo_sync"=>"mobile",
"woo_attr"=>"",
"unique_id"=>$uid2,
"title"=>"$title2",
"description"=>"dezcripcion",
"img"=>"$pic",
"url"=>"$url",
"last_update"=>"1576704317",
"extra" => array("deeplink" => "")
);

  }
return $fiction;
}

else {
 return "AppID for the Production environment.";
}
}

Podobno podczas tworzenia zrzutu var_dump do odpowiedzi api powinieneś uzyskać dane z następującego adresu URL: https://www.ebay.es/sch/i.html?_nkw=Xiaomi+Redmi+Note+7&_ddo=1&_ipg= 3 & _pgn = 1

Ale nic od nich nie dostałem, a przynajmniej nie w żądanej kolejności, zamiast tego dostałem tylko "Xiaomi Redmi Note 8 Pro 6GB 128GB 6,53", "Xiaomi Redmi Note 8 Pro 128GB 6GB 6,53" Smartphone NFC 4500mAh Global ROM ", tylko jeden miał dopasowanie „SMARTPHONE XIAOMI REDMI NOTE 7 128GB FREE 5379335”. Jak mogę podać większą precyzję i zarządzać danym słowem kluczowym?

Dzięki

0
Vicente Fuentes 20 grudzień 2019, 05:10

1 odpowiedź

Nie używaj findItemsByKeywords, używaj findItemsAdvanced. Nie sądzę, aby aktualizowali findItemsByKeywords od lat, a ludzie zgłaszali problemy z jego używaniem. To powiedziawszy, słyszałem również, że wyniki uzyskane z interfejsu API będą się różnić od wyników uzyskanych w samym serwisie eBay. W serwisie eBay wyszukiwania będą „rozmyte”, co oznacza, że istnieje większe prawdopodobieństwo, że uzyskasz niepożądane wyniki. API jest zazwyczaj bardzo rygorystyczne, jeśli chodzi o wyniki, które otrzymasz; jeśli wyszukujesz tylko tytuł pozycji i wyszukasz „Xiaomi Redmi Note 7”, otrzymasz tylko wyniki zawierające wszystkie cztery słowa kluczowe.

0
FoulFoot 20 grudzień 2019, 06:14
Wypróbowałem usługę, o której wspomniałeś, jest niewielka poprawa, ale nadal znajduję inne wyszukiwania na ekranie niż w adresie URL, o którym mowa, na przykład: „Xiaomi Redmi Note 8 Pro 128 GB 6 GB 6,53” Smartfon NFC 4500 mAh Global ROM ”
 – 
Vicente Fuentes
20 grudzień 2019, 16:57
I nie ma go w: ebay.es/sch/9355/…
 – 
Vicente Fuentes
20 grudzień 2019, 17:00
Jak powiedziałem, wyszukiwanie w serwisie eBay.com jest rozmyte. Przechodząc do linku wyszukiwania, widzę „Xiaomi Redmi Note 8”. Interfejs API może ignorować pojedyncze cyfry, więc w tytule ciągnie „„Xiaomi Redmi Note”. Spróbuj użyć słowa kluczowego, które nie jest pojedynczą literą ani cyfrą, aby je zawęzić.
 – 
FoulFoot
20 grudzień 2019, 20:12