Как получить пользовательские теги из RSS-канала в PHP - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь использовать новостные данные Google Trends в качестве доказательства концепции моего проекта. Я нашел следующий код для разбора данных из RSS-канала и рассмотрел несколько примеров выборочной выборки тегов в Интернете, но ни один из них мне не подходит. Кажется, я не могу разобрать тег "ht: news_item_url" из ленты RSS со следующим кодом:

$domOBJ = new DOMDocument();
$domOBJ->load("https://trends.google.com.tr/trends/trendingsearches/daily/rss?geo=TR");//XML page URL

$content = $domOBJ->getElementsByTagName("item");

foreach( $content as $data )
{
    $title = $data->getElementsByTagName("title")->item(0)->nodeValue;
    $link = $data->getElementsByTagName("link")->item(0)->nodeValue;
    $description = $data->getElementsByTagName("description")->item(0)->nodeValue;
    $newsLink = $data->getElementsByTagNameNS("https://trends.google.com.tr/trends/trendingsearches/daily/rss?geo=TR", "ht:news_item_url")->item(0)->nodeValue;
    echo "$newsLink";

}

RSS, который я пытаюсь проанализировать, можно найти здесь: https://trends.google.com.tr/trends/trendingsearches/daily/rss?geo=TR

1 Ответ

0 голосов
/ 04 февраля 2020

В вашем звонке на getElementsByTagNameNS() есть пара ошибок. Во-первых, вы используете неправильное значение для URI пространства имен, вы используете URL-адрес источника, а не URI пространства имен, вам следует использовать значение xmlns:ht from ...

<rss xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:ht="https://trends.google.com.tr/trends/trendingsearches/daily" 
    version="2.0">

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

Конечный результат должен быть .. .

$newsLink = $data->getElementsByTagNameNS("https://trends.google.com.tr/trends/trendingsearches/daily"
, "news_item_url")
...