3

我正在接近网络编程。我需要从网页中检索一些信息。我有页面的url,所以我想要html源代码,将其翻译成xml,然后使用php的dom函数来获取我需要的信息。

我的php代码是这样的:

$url=$_POST['url']; //url

$doc_html=new DOMDocument();
$doc_html->loadHTML($url); //html page
$doc_xml=new DOMDocument();
$doc_xml->loadXML($doc_html->saveXML()); //xml converted page

$nome_app=new DOMElement($doc_xml->getElementById('title'));

echo $nome_app->nodeValue;

我收到这个致命错误:

未捕获的异常 'DOMException' 与此行上的消息“无效字符错误”:

$nome_app=new DOMElement($doc_xml->getElementById('title'));

怎么了?是html-to-xml的整个过程吗?我在网上找到了一些例子,应该可以工作......谢谢!

4

4 回答 4

2

解决了!简单地:

$doc_html=new DOMDocument();
$doc_html->loadHTML(file_get_contents($url));
$doc_html->saveXML();
$nome = $doc_html->getElementsByTagName('h1');
foreach ($nome as $n) { 
   echo $n->nodeValue, PHP_EOL;
}

也许之前的代码太乱了。谢谢大家的回答!

于 2012-10-30T22:48:21.513 回答
1

您需要为您在 HTML 中使用的特殊字符定义 XML 实体。它一定是与这里相同的问题:DOMDocument::loadXML vs. HTML Entities

于 2012-10-30T10:32:30.773 回答
1

我会使用 preg_match() 解决方案来获取您需要的内容,而不是将整个文档解析为 XML。特别是如果文档由于某种原因变得无效,您将不再获得您的信息。

于 2012-10-30T10:34:24.717 回答
0

最好的方法是使用 xpath 查询,

http://php.net/manual/en/simplexmlelement.xpath.php

它非常快

于 2012-10-30T10:39:48.953 回答