2014-12-29 1 views
0

Я хочу, чтобы получить изображение из тега xml в php Curl Method .... Я пытаюсь получить изображения из RSS-ленты amazon ... вот ссылка http://www.amazon.co.uk/gp/rss/bestsellers/electronics/560834/ref=zg_bs_560834_rsslinkКак получить путь к изображению из amazon Rss Feed Использование метода Curl в PHP

вот мой код php для извлечения изображения с использованием метода Curl. Но это не работает. Пожалуйста, помогите мне в этом

<?php 
$feed = "http://www.amazon.co.uk/gp/rss/bestsellers/electronics/560834/ref=zg_bs_560834_rsslink"; 
// Use cURL to fetch text 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $feed); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$rss = curl_exec($ch); 
curl_close($ch); 

// Manipulate string into object 
$rss = simplexml_load_string($rss); 
$siteTitle = $rss->channel->title; 
$cnt = count($rss->channel->item); 

for($i=0; $i<4; $i++) 
{ 
    $url = $rss->channel->item[$i]->link; 
    $title = $rss->channel->item[$i]->title; 
    $desc = $rss->channel->item[$i]->description; 
    echo '<h3><a href="'.$url.'">'.$title.'</a></h3>'; 
    $image = $rss->channel->item[$i]->description->img->attributes()->src; 

    echo "Image Path : ".$image; 
} 
+0

img-> attributes() -> src не существует в описании. –

ответ

0

Я не вижу URL-адрес изображения в описании канала. Таким образом, нет изображения с широким диапазоном каналов.

<?xml version="1.0"?> 
<rss version="2.0"> 
    <channel> 
    <title>Amazon.co.uk: Bestsellers in Electronics &gt; Camera &amp; Photo</title> 
    <link>http://www.amazon.co.uk/Best-Sellers-Electronics-Camera-Photo/zgbs/electronics/560834/ref=pd_zg_rss_ts_ce_560834_c</link> 
    <description><![CDATA[The most popular items in Camera & Photo (Updated hourly). Note: Product prices and availability were accurate at the time this feed was generated but are subject to change.]]></description> 
    <pubDate>Tue, 30 Dec 2014 04:54:42 GMT</pubDate> 
    <lastBuildDate>Tue, 30 Dec 2014 04:54:42 GMT</lastBuildDate> 
    <ttl>60</ttl> 
    <generator>Amazon Community RSS 2.0</generator> 
    <language>en-gb</language> 
    <copyright>Copyright 2014, Amazon.com</copyright>  
    <item> 
     ...snip... 
    </item> 
    </channel> 
</rss> 

Теперь, следующий первый пункт в то время я принес копию RSS:

<item> 
    <title>#1: Samsung UHS-I CLASS 10 32GB SD Micro Card with Adapter</title> 
    <guid isPermaLink="false">top-sellers_electronics_560834_B00J29BR3Y</guid> 
    <link>http://www.amazon.co.uk/Samsung-UHS-I-CLASS-Micro-Adapter/dp/B00J29BR3Y/ref=pd_zg_rss_ts_ce_560834_1</link> 
    <pubDate>Tue, 30 Dec 2014 04:54:42 GMT</pubDate> 
    <description><![CDATA[<div style="float:left;"> 
    <a class="url" href="http://www.amazon.co.uk/Samsung-UHS-I-CLASS-Micro-Adapter/dp/B00J29BR3Y/ref=pd_zg_rss_ts_ce_560834_1"><img src="http://ecx.images-amazon.com/images/I/41PsVtmh0KL._SL160_.jpg" alt="Samsung UHSI" border="0" hspace="0" vspace="0" /></a> 
    </div><span class="riRssTitle"> 
    <a href="http://www.amazon.co.uk/Samsung-UHS-I-CLASS-Micro-Adapter/dp/B00J29BR3Y/ref=pd_zg_rss_ts_ce_560834_1">Samsung UHS-I CLASS 10 32GB SD Micro Card with Adapter</a> 
    </span> <br /><span class="riRssContributor">by Samsung</span> <br /> 
    <img src="http://g-ecx.images-amazon.com/images/G/02/x-locale/common/icons/uparrow_green_trans._V192561975_.gif" width="13" align="abstop" alt="Ranking has gone up in the past 24 hours" title="Ranking has gone up in the past 24 hours" height="11" border="0" /> 
    <font color="green"><strong></strong></font> 183 days in the top 100 <br /> 
    <img src="http://g-ecx.images-amazon.com/images/G/02/detail/stars-4-5._V192253866_.gif" width="64" height="12" border="0" style="margin: 0; padding: 0;"/>(1432) 
    <br /><br /><a href="http://www.amazon.co.uk/Samsung-UHS-I-CLASS-Micro-Adapter/dp/B00J29BR3Y/ref=pd_zg_rss_ts_ce_560834_1">Buy new: 
    </a> <strike>£24.99</strike> <font color="#990000"><b>£13.72</b></font> 
    <br /><a href="http://www.amazon.co.uk/gp/offer-listing/B00J29BR3Y/ref=pd_zg_rss_ts_ce_560834_1">26 used & new</a> 
    from <span class="price">£9.15</span><br /><br />(Visit the 
    <a href="http://www.amazon.co.uk/Best-Sellers-Electronics-Camera-Photo/zgbs/electronics/560834/ref=pd_zg_rss_ts_ce_560834_1">Bestsellers in Camera & Photo</a> 
    list for authoritative information on this product's current rank.)]]> 
    </description> 
</item> 

И снова, без изображения в формате RSS. Однако вы можете видеть изображения в описании. Это означает, что отображение описания будет включать изображение (в этом случае несколько несколько).

Если вы действительно хотите получить только и только изображение, вы можете проанализировать HTML-описание и найти теги <img> и выбрать тот, который имеет справедливый размер для вашей последней страницы. Похоже, что это вы пытаетесь сделать уже ...

Однако, ваш код, кажется, ожидать, что описание будет разобран вызова в XML-парсер:

$rss = simplexml_load_string($rss); 

не так, потому что это определяемый внутри CDATA, что означает, что он выглядит как один большой фрагмент текста в синтаксический анализатор XML (что является правильным способом делать это здесь).

Таким образом, вам нужно извлечь описание, проанализировать его отдельно, а затем выполнить поиск тега img внутри этого документа под-xml (обратите внимание, что внутри описания он может быть HTML, а не XML, что означает, что он не может компилироваться с XML-парсер, потому что некоторые теги не закрыты для XML. Эта версия кажется, что это XML совместима.)

$description = $rss->channel->item[$i]->description; 
$desc_xml = simplexml_load_string($description); 
// then you have multiple IMG, I'm not too sure how you get the count, I would imagine like this: 
$max = count($desc_xml->img); 
for($j = 0; $j < $max; ++$j) 
{ 
    $url = $desc_xml->img[$j]->attributes()->src; 
    ... 
} 

что-то вроде этого.

Смежные вопросы