2016-08-22 2 views
0

Я пытаюсь создать простой сайт rss-канала.
я могу получить несколько каналов RSS, просто делая это:Как получить <img> Значение src из файла xml?

let article = { 
       'title': item.title, 
       'image': item.image.url, 
       'link': item.link, 
       'description': item.description, 
      } 

Название и ссылка Работа для большинства RSS-каналы, но изображение и описание нет.
Так много RSS платы имеет изображение в виде HTML внутри описания, как это:

{ title: 'The Rio Olympics Are Where TV Finally Sees the Future', 
description: '<div class="rss_thumbnail"><img src="http://www.wired.com/wp-content/uploads/2016/08/GettyImages-587338962-660x435.jpg" alt="The Rio Olympics Are Where TV Finally Sees the Future" /></div>Time was, watching the Olympics just meant turning on your TV. That\'s changed—and there\'s no going back. The post <a href="http://www.wired.com/2016/08/rio-olympics-tv-finally-sees-future/">The Rio Olympics Are Where TV Finally Sees the Future</a> appeared first on <a href="http://www.wired.com">WIRED</a>.',... 

Как я могу получить URL изображения от него?

EDIT:

http.get("http://www.wired.com/feed/"... 

    .on('readable', function() { 
     let stream = this; 
     let item; 
     while(item = stream.read()){ 
      let article = { 
       'title': item.title, 
       'image': item.image.url, 
       'link': item.link, 
       'description': item.description, 
      } 
      news.push(article); 
     } 
    }) 

это некоторые из моих кодов, и в основном я пытаюсь получить URL изображения из Wired RSS.
Если у меня есть изображение пользователя: item.image.url, оно не работает. Так что я должен изменить?

ответ

1

использование xml2js для преобразования XML в JSON

var parseString = require('xml2js').parseString; 

var xml = '<img title=\'A San Bernardino County Fire Department firefighter watches a helitanker make a water drop on a wildfire, seen from Cajon Boulevard in Devore, Calif., Thursday, Aug. 18, 2016. (David Pardo/The Daily Press via AP)\' height=\'259\' alt=\'APTOPIX California Wildfires\' width=\'460\' src=\'http://i.cbc.ca/1.3730399.1471835992!/cpImage/httpImage/image.jpg_gen/derivatives/16x9_460/aptopix-california-wildfires.jpg\' />'; 

parseString(xml, function (err, result) { 
    console.log(JSON.stringify(result, null, 4)); 
    console.log(result["img"]["$"]["src"]); 
}); 
+0

Я попробовал ваш ответ, но это не сработало. Я редактировал и добавлял некоторые из моих кодов. – Dan

+0

@ Dan Прошу прощения за то, что код не сработал для вас .... где произошел сбой кода .... предполагалось получить «url» из строки ... также не могли бы вы сказать, какие изменения вы внесли в него .... –

-1

Вы можете использовать парсер DOMDocument, чтобы получить источник изображения.

$html = "<img title=\'A San Bernardino County Fire Department firefighter watches a helitanker make a water drop on a wildfire, seen from Cajon Boulevard in Devore, Calif., Thursday, Aug. 18, 2016. (David Pardo/The Daily Press via AP)\' height=\'259\' alt=\'APTOPIX California Wildfires\' width=\'460\' src=\'http://i.cbc.ca/1.3730399.1471835992!/cpImage/httpImage/image.jpg_gen/derivatives/16x9_460/aptopix-california-wildfires.jpg\' />"; 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 
$src = $xpath->evaluate("string(//img/@src)"); # "/images/image.jpg" 
+0

Где OP сказал, что он хотел PHP? –

0

Использование регулярных выражений строки:

var res = description.match(/src=.*\.(jpg|jpeg|png|gif)/gi); 

Fiddle Demo

+0

Я пробовал ваш ответ, но это не сработало. Я редактировал и добавлял некоторые из моих кодов. – Dan

0

Одна идея будет использовать регулярные выражения. Для экс:

var re = /(src=)(\\'htt.*\\')/g 
var img_string = "your image tag string" 
var match = re.exec(img_string) 
var result = match[1] 
Смежные вопросы