通信社のサイトの RSS を読み込んで、データベースに保存するすべてのニュースのいくつかのオプションを取得しようとしています。そのため、php 関数を file_get_contents または cURl として使用しましたが、サイトのコンテンツを取得して分析し、必要なニュースの部分を分離するのに約 1 分かかります。
これは、RSS からニュースのデータを取得するコードの一部です。
$rss = new DOMDocument();
$rss->load('http://isna.ir/fa/Sports/feed');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'category' => $node->getElementsByTagName('category')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$title = str_replace(' & ', ' & ', $feed[0]['title']);
$link = $feed[0]['link'];
$category = $feed[0]['category'];
$date = date('l F d, Y', strtotime($feed[0]['date']));
この部分では、ニュースのリンクを使用して、元のニュース ページから写真を取得します。
$context = stream_context_create(array('http' => array('header'=>'Connection: close')));
$f = explode("news", $link);
$photo_link = $f[0]. 'photo' .$f[1];
$ff = file_get_contents($photo_link, false, $context);
$f1 = explode('<div class="news-image">', $ff);
$f2 = explode('<h1', $f1[1]);
$f3 = explode('href="', $f2[0]);
$f4 = explode('">', $f3[1]);
$image = $f4[0];
echo '<img src="' .$image. '"></img>';
そして、これはほとんどの場合の結果です:
Warning: file_get_contents(http://isna.ir/fa/photo/92040301515/مدافع-تیم-ملی-آلمان-از-فوتبال-خداحافظی-کرد) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /opt/lampp/htdocs/example8/reader.php
cURL 関数も使用しましたが、それほど良い結果は得られませんでした。