2016-03-25 83 views
0

我試圖抓取GetSellerList請求返回的每個項目的最高質量圖像。 HQ圖像可以通過點擊產品頁面上的圖像手動查看(所以我知道它們存在)。使用Ebay API抓取大圖片GetSellerList

不幸的是,它只返回中等大小的圖像。我用google搜索了一下,只是發現了很多關於SelectorOutput的提及,它只能在Finding API中使用,並且與我正在嘗試做的事情完全無關。

這裏是我的XML輸入(請注意,我的身份驗證與我使用的是JS庫的照顧):

var xml = '<?xml version="1.0" encoding="UTF-8"?>' + 
     '<GetSellerListRequest xmlns="urn:ebay:apis:eBLBaseComponents">' + 
      '<RequesterCredentials>' + 
      '<eBayAuthToken> <!-- my ebayAuthToken -->' + 
      '</RequesterCredentials>' + 
      '<UserID>samurai-gardens</UserID>' + 
      '<StartTimeFrom>2016-01-01T23:35:27.000Z</StartTimeFrom>' + 
      '<StartTimeTo>2016-02-01T23:35:27.000Z</StartTimeTo>' + 
      '<DetailLevel>ItemReturnDescription</DetailLevel>' + 
      '<Pagination ComplexType="PaginationType">' + 
      '<EntriesPerPage>10</EntriesPerPage>' + 
     '<PageNumber>1</PageNumber>' + 
     '</Pagination>' + 
     '</GetSellerListRequest>"'; 

我得到正確的輸出,我只是不知道怎樣才能用這個拉大圖像。感謝ebay一個超級沮喪的api!

+1

很難找到關於此主題的信息。我的想法是,他們可能實際上限制了這種能力,以便人們不使用eBay作爲產品照片存儲庫。當您點擊易趣網站上的圖片時,您是否考慮過分解圖片網址?我在考慮如果您知道您可以毫無困難地檢索到的根EPS網址,以及如何構建eBay網址來請求大圖片,那麼您可能能夠檢索到您要查找的數據。 –

+1

您必須挖掘eBay頁面的來源才能找到實際的圖片網址,但我所看到的是每張高分辨率圖片的名稱均爲s-l1600.jpg。這可能是巧合,因爲我只檢查了3個隨機列表。網址的格式爲:http://i.ebayimg.com/images/g/dCMAAOSwMzVTxANQ/s-l1600.jpg我不確定整個網址是否符合您的要求。另外需要注意的是,L1600圖像總是說它們是原生1600 x 1600,這可能表明命名約定和圖像分辨率之間存在關聯。也許這會給你一個字符串來拉。 –

+0

感謝您的回覆Nate。這是我回來的示例圖片網址:i.ebayimg.com/00/s/ODAwWDYyOQ==/z/3eEAAOSwSdZWdJRL/$_1.JPG?set_id=880000500F我不確定是否或如何操作此URL傳回1600 x 1600.您的方法實際上覆蓋了另一個我記得看到的stackoverflow線程。 – bmills

回答

1

只是爲了澄清張貼在這個問題上的意見:

爲了獲得與產品上市執行以下相關的高分辨率圖像..

利用GetSellerRequest如下格式從獲得的圖片網址項目詳細信息:

var xml = '<?xml version="1.0" encoding="UTF-8"?>' + 
     '<GetSellerListRequest xmlns="urn:ebay:apis:eBLBaseComponents">' + 
      '<RequesterCredentials>' + 
      '<eBayAuthToken> <!-- my ebayAuthToken -->' + 
      '</RequesterCredentials>' + 
      '<UserID>samurai-gardens</UserID>' + 
      '<StartTimeFrom>2016-01-01T23:35:27.000Z</StartTimeFrom>' + 
      '<StartTimeTo>2016-02-01T23:35:27.000Z</StartTimeTo>' + 
      '<DetailLevel>ItemReturnDescription</DetailLevel>' + 
      '<Pagination ComplexType="PaginationType">' + 
      '<EntriesPerPage>10</EntriesPerPage>' + 
     '<PageNumber>1</PageNumber>' + 
     '</Pagination>' + 
     '</GetSellerListRequest>"'; 

這應該product的URL,如下列:

i.ebayimg.com/00/s/ODAwWDYyOQ==/z/3eEAAOSwSdZWdJRL/$_1.JPG?set_id=880000500F 

獲得此URL後,需要修改它以指向高分辨率圖像選項。通過試驗和錯誤,這似乎是.JPG圖像3或57(可能還有其他)。每個圖像都有不同的對齊,這是多個「高分辨率」選項的原因。使用標準字符串操作技術修改返回的URL以獲得以下內容:

i.ebayimg.com/00/s/ODAwWDYyOQ==/z/3eEAAOSwSdZWdJRL/$_3.JPG 

這可以通過以下方式獲得(在c#中)。下面的代碼片段沒有經過測試。確保子字符串中沒有一個錯誤。這樣做有無數的方法,這恰好是我以爲的..

string url = "i.ebayimg.com/00/s/ODAwWDYyOQ==/z/3eEAAOSwSdZWdJRL/$_1.JPG?set_id=880000500F"; 
int index = url.LastIndexOf(Convert.ToChar(@"/"); 
url = url.Substring(0,index+1); 
url = url + @"/$_3.JPG"; 

如果您使用的是C#(我意識到原來的職位是爲JavaScript的),你可以在下面的使用信息線程從URL獲取的圖像流:URL to Stream

這裏是顯示使用Javascript從URL的圖像後:URL To Display Javascript

+0

這裏有一個有趣的非官方解釋,這裏有什麼神奇的數字:https://forums.developer.ebay.com/questions/12284/get-larger-images-via-getmultipleitems-call-option.html#answer-12740 – jthompson