SImple HTML DOM 解析器不解析 <body> 标签
SImple HTML DOM parser not parsing <body> tag
我正在使用此 simple_html_dom 解析器来尝试解析外部 url。我可以在大多数页面上正确使用它。
解析器无法识别 html 中的
标记。
require 'simple_html_dom.php';
$html = file_get_html('http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota');
// Find any tag for eg. <div>
$tag = $html->find('div',0);
var_dump($tag);
结果为空。
我试图找出发生这种情况的原因并发现
$x = $html->find('html',0)->children();
$x 只有一个子标签,即
标签。 标签根本没有被解析。
有人遇到过这样的问题吗?请帮忙。
我建议您使用 DOMDocument class 和 cURL,如下所示:
$url = "http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$curlReturn = curl_exec($ch);
$html = new DOMDocument();
$html->loadHTML($curlReturn);
$body = $html->getElementsByTagName("body");
curl_close($ch);
它比简单的解析器更强大。
http://php.net/manual/en/class.domdocument.php
http://php.net/manual/en/book.curl.php
那个网站的 HTML 有很多问题。见 W3 HTML validation report:
Error End tag div
seen, but there were open elements.
From line 134, column 47; to line 134, column 52
n Live</p></div>? <
Error: Unclosed element a
.
From line 133, column 5; to line 133, column 90
</h2>? <a href="/live" class="listenLiveButtonTrigger" onclick="listenLive(1);return false;">?
...等等
提到了重复的 id 值、杂散的结束标记、无效属性、子样式标记的使用……以及更多问题。
我认为简单 HTML DOM 解析器在所有这些混乱中迷失了方向。
我正在使用此 simple_html_dom 解析器来尝试解析外部 url。我可以在大多数页面上正确使用它。
解析器无法识别 html 中的
标记。require 'simple_html_dom.php';
$html = file_get_html('http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota');
// Find any tag for eg. <div>
$tag = $html->find('div',0);
var_dump($tag);
结果为空。
我试图找出发生这种情况的原因并发现
$x = $html->find('html',0)->children();
$x 只有一个子标签,即
标签。 标签根本没有被解析。有人遇到过这样的问题吗?请帮忙。
我建议您使用 DOMDocument class 和 cURL,如下所示:
$url = "http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$curlReturn = curl_exec($ch);
$html = new DOMDocument();
$html->loadHTML($curlReturn);
$body = $html->getElementsByTagName("body");
curl_close($ch);
它比简单的解析器更强大。 http://php.net/manual/en/class.domdocument.php http://php.net/manual/en/book.curl.php
那个网站的 HTML 有很多问题。见 W3 HTML validation report:
Error End tag
div
seen, but there were open elements.
From line 134, column 47; to line 134, column 52n Live</p></div>? <
Error: Unclosed element
a
.
From line 133, column 5; to line 133, column 90</h2>? <a href="/live" class="listenLiveButtonTrigger" onclick="listenLive(1);return false;">?
...等等
提到了重复的 id 值、杂散的结束标记、无效属性、子样式标记的使用……以及更多问题。
我认为简单 HTML DOM 解析器在所有这些混乱中迷失了方向。