rssのスクレイピングで<link>のurlを取得できない
rssとxpathによるfeedのスクレイピングを勉強中なのですが、rssの<link>タグの内容だけが取得されず疑問に思っています。
rssとatom共に、タイトル、url、日付の取得ができるようになりたいのと、同じ<item>に存在している<title>と<link>で、なぜ<link>の値が取得できないのかの理由も知りたいと思います。
発生している問題・エラーメッセージ
エラーでは無いのですがvar_dumpの出力結果となり'url'だけが取得されません。
array (size=10) 0 => array (size=3) 'title' => string '【無印】久しぶりのディフューザー。いつか作ってみたいオリジナルブレンド。' (length=108) 'url' => string '' (length=0) 'date' => string '2018-09-27T22:40:19+09:00' (length=25)
該当のソースコード
php
1// RSSの場合 2$dom = new DOMDocument; 3@$dom->loadHTMLFile('http://ryouhinseikatsu.blog.jp/index.rdf'); 4$xpath = new DOMXPath($dom); 5$entries = []; 6foreach ($xpath->query('//item') as $node) { 7 $entries[] = [ 8 'title' => $xpath->evaluate('string(title)', $node), 9 'url' => $xpath->evaluate('string(link)', $node), 10 'date' => $xpath->evaluate('string(date)', $node), 11 ]; 12} 13var_dump($entries);
試したこと
同じサイトのatomについては以下の内容でurlを取得することができました。
php
1// ATOMの場合 2$dom = new DOMDocument; 3@$dom->loadHTMLFile('http://ryouhinseikatsu.blog.jp/atom.xml'); 4$xpath = new DOMXPath($dom); 5$entries = []; 6foreach ($xpath->query('//entry') as $node) { 7 $entries[] = [ 8 'title' => $xpath->evaluate('string(title)', $node), 9 'url' => $xpath->evaluate('string(link/@href)', $node), 10 'date' => $xpath->evaluate('string(modified)', $node), 11 ]; 12} 13var_dump($entries);
学習中ということもあり根本的な理解が不足していると思うのですが、名前空間などが影響しているのかと思っていますが上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
php 7.1の環境で動かしています
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/01 07:50