我正在尝试从此RSS Feed http://www.autoexpress.co.uk/car-news/feed/获取每个项目的标题,说明,链接,图片和日期。但是不明白为什么,链接标签和图像标签的src是不可能获得的,其余的工作正常。这就是我试过的:
<?php
include "testing3/lib/simple_html_dom.php";
$url = 'http://www.autoexpress.co.uk/car-news/feed';
$rss= file_get_html($url);
$items = $rss->find('item');
foreach ($items as $article) {
$title[] = $article->find('title',0)->plaintext;
$description[] = $article->find('description',0)->plaintext;
$link[] = $article->find('link', 0)->plaintext;
$image[] = $article->find('img', 0);
$date[] = $article->find('pubDate', 0)->plaintext;
}
echo 'Title is '.$title[0].'<br>';
echo 'Description is '.strip_tags(html_entity_decode($description[0])).'<br>';
echo 'Link is '.$link[1].'<br>';
echo 'Date is '.$date[1].'<br>';
echo 'Image Source is '.$image[1];
?>
这是输出 标题是Fiat Panda 4x4 Antarctica评论 - 图片 说明是图片查看全部8张图片24五月,2014 链接是 日期是2014年5月23日星期五16:29:39 +0000 图像来源
var_dump($link);
我得到一个空字符串数组:
array(40) {
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(0) "" etc
var_dump($image)
同样的事情就是有NULL值。我错了什么?
答案 0 :(得分:2)
你根本无法解析&#34;链接&#34;标签与PHP简单的HTML DOM解析器原因不明。我也使用了这个库,它从未解析过这些元素。您可以使用&lt;创建一个简单的HTML文件。链接&gt;元素,他们不会被解析。但是,如果将其更改为&lt; link2&gt; (或类似),解析器将立即开始工作。我想那就是&#34;链接&#34;是&#34;保留&#34;这个解析器中的单词,或者什么。
答案 1 :(得分:1)
直接蝙蝠,这是一个非常令人讨厌的RSS提要。我的猜测是你的图书馆不能处理嵌套/转义的RSS标签。由于没有人在40多分钟内回复你,这就是沼泽标准方法:
$rssfeed = simplexml_load_file('http://www.autoexpress.co.uk/car-news/feed');
foreach ($rssfeed->channel as $channel) {
echo '<ul>';
foreach ($channel->item as $item) {
echo '<li><a href="' . htmlentities($item->link) . '"</a>';
echo htmlentities($item->title);
echo htmlentities($item->description);
echo htmlentities($item->img);
echo htmlentities($item->pubDate);
echo '</li>';
}
echo '</ul>';
}
是的,甚至没有使用您在摘录顶部引用的库,但是它会抓取所需的代码,包括转义的img标签,即使之后需要进行一些严肃的清理。
实际上我认为这个脚本在img标签中失败了,但那是因为转义的img标签嵌套在描述中。