Парсинг новостей Google RSS с PHP - PullRequest
3 голосов
/ 28 июня 2011

Я хочу разобрать Новости Google rss с помощью PHP. Мне удалось запустить этот код:

<?
$news = simplexml_load_file('http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=n&output=rss');

foreach($news->channel->item as $item) {
    echo "<strong>" . $item->title . "</strong><br />";
    echo strip_tags($item->description) ."<br /><br />";
}
?>

Однако я не могу решить следующие проблемы. Например:

  1. Как я могу получить гиперссылку с заголовком новости?
  2. Поскольку каждая новость Google имеет много связанных ссылок на новости в нижнем колонтитуле (и мой код выше также включает их). Как я могу удалить их из описания?
  3. Как я могу получить изображение каждой новости также? (Google отображает уменьшенное изображение каждой новости)

Спасибо.

Ответы [ 3 ]

26 голосов
/ 29 июня 2011

Итак, все, что вам нужно для вашей конкретной ситуации:

<code><?php
$news = simplexml_load_file('http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=n&output=rss');

$feeds = array();

$i = 0;

foreach ($news->channel->item as $item) 
{
    preg_match('@src="([^"]+)"@', $item->description, $match);
    $parts = explode('<font size="-1">', $item->description);

    $feeds[$i]['title'] = (string) $item->title;
    $feeds[$i]['link'] = (string) $item->link;
    $feeds[$i]['image'] = $match[1];
    $feeds[$i]['site_title'] = strip_tags($parts[1]);
    $feeds[$i]['story'] = strip_tags($parts[2]);

    $i++;
}

echo '<pre>';
print_r($feeds);
echo '
'; ?>

И вывод должен выглядеть так:

[2] => Array
        (
            [title] => Los Alamos Nuclear Lab Under Siege From Wildfire - ABC News
            [link] => http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGxBe4YsZArH0kSwEjq_zDm_h-N4A&url=http://abcnews.go.com/Technology/wireStory?id%3D13951623
            [image] => http://nt2.ggpht.com/news/tbn/OhH43xORRwiW1M/6.jpg
            [site_title] => ABC News
            [story] => A wildfire burning near the desert birthplace of the atomic bomb advanced on the Los Alamos laboratory and thousands of outdoor drums of plutonium-contaminated waste Tuesday as authorities stepped up ...
        )
3 голосов
/ 29 июня 2011

Я бы рекомендовал проверить SimplePie .Я использовал его для нескольких разных проектов, и он отлично работает (и устраняет всю головную боль, с которой вы сейчас сталкиваетесь).

Теперь, если вы пишете этот код просто потому, что хотите изучитьКак это сделать, вы, вероятно, должны игнорировать этот ответ.:)

1 голос
/ 28 июня 2011
  1. Чтобы получить URL для новости, используйте $ item-> link.
  2. Если для связанных ссылок новостей есть общий разделитель, вы можете использовать регулярное выражение, чтобы обрезать все после него.
  3. Google помещает HTML-код миниатюрного изображения в поле описания канала.Вы можете переопределить все между открывающими и закрывающими скобками для объявления изображения, чтобы получить HTML для него.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...