Я пытаюсь использовать новостные данные 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
В вашем звонке на getElementsByTagNameNS() есть пара ошибок. Во-первых, вы используете неправильное значение для URI пространства имен, вы используете URL-адрес источника, а не URI пространства имен, вам следует использовать значение xmlns:ht from ...
getElementsByTagNameNS()
xmlns:ht
<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.
news_item_url
Конечный результат должен быть .. .
$newsLink = $data->getElementsByTagNameNS("https://trends.google.com.tr/trends/trendingsearches/daily" , "news_item_url")