2

我正在尝试从 boomkat.com RSS 提要创建新版本的数据库。Feed 位于此处: 链接

现在,我在选择段落标签内的内容时遇到了问题。

RSS 提要中的一段如下所示:

<p>GOAT<br/><a href="http://boomkat.com/downloads/601228-goat-world-music">World Music</a><br/>ROCKET RECORDINGS<br/>INDIE / ROCK / ALTERNATIVE<br/>MP3 Release</p>

到目前为止我所做的是:

<?php

$dom = new DOMDocument;
$dom->validateOnParse = true;
$dom->load("http://feeds.boomkat.com/boomkat_downloads_just_arrived");
$content = $dom->getElementsByTagName('content');
foreach ($content as $result) {
    echo $result->nodeValue, PHP_EOL;
}
?>

但这给了我全部的饲料。在 getElementsByTagName 中写入 'p' 不起作用。

4

2 回答 2

2

我建议使用 DOMDocument::loadHTMLFile() 方法而不是 DOMDocument::load() (因为 load() 严格用于读取 XML,而不是 HTML)。

您获取整个文档的原因是因为您正在查询整个文档以查找称为“内容”的元素。没有这样的 HTML 元素。相反,您应该使用

$dom->getElementsByTagName('p');

这将抓取 HTML 文档中的所有标签,然后您可以遍历它。使用“p”查询标签不起作用的主要原因是您需要将文档加载为严格的 HTML,而不是使用默认的 XML。

于 2012-11-08T14:58:25.530 回答
1

好的,我不明白您为什么会遇到问题,但我只是尝试了您提供的 URL 的建议,并正确打印了每个 <p> 标记的所有文本。

这是代码:

$doc = new DOMDocument();
$doc->loadHTMLFile("http://boomkat.com/downloads/601228-goat-world-music");
$content = $doc->getElementsByTagName("p");

foreach($content as $element) {
    Util::debug($element->textContent); // helper method similar to PHP's var_dump()
}

这是我能够打印到屏幕上的结果:

string(91) "Residual Echoes have come up with a really rather lovely disc of psychedelic folk goodness."

string(8) "MAMMATUS"

string(8) "Mammatus"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £2.95FLAC Download // £3.95"

string(0) ""

string(19) "SERPENTINA SATELITE"

string(16) "Mecanica Celeste"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £3.95FLAC Download // £4.95"

string(0) ""

string(12) "SUNCOIL SECT"

string(25) "One Note Obscures Another"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £6.99FLAC Download // £7.99"

string(0) ""

string(16) "TEETH OF THE SEA"

string(10) "Hypnoticon"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £2.50FLAC Download // £3.50"

string(52) "Proggy kosmiche rock from London's Teeth Of The Sea."

string(16) "TEETH OF THE SEA"

string(21) "Orphaned By the Ocean"

string(17) "ROCKET RECORDINGS"

string(45) "MP3 Download // £5.99FLAC Download // £6.99"

这是您在代码中所做的事情吗?

于 2012-11-09T17:00:50.533 回答