php - 简单的 HTML DOM 解析器不解析 <body> 标签

标签 php simple-html-dom

我正在使用这个 simple_html_dom 解析器来尝试解析外部 url。我能够在大多数页面上正确使用它。

但是当我尝试解析网站时 http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota

解析器无法识别 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 只有一个子标签,即 标签。 标签根本没有被解析。

有没有人遇到过这样的问题?请帮忙。

最佳答案

该网站的 HTML 有很多问题。查看W3 HTML validation report :

  1. Error End tag div seen, but there were open elements.
    From line 134, column 47; to line 134, column 52

    n Live</p></div>?             <
    
  2. 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 解析器在所有这些困惑中迷失了方向。

关于php - 简单的 HTML DOM 解析器不解析 <body> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175746/

相关文章:

php - 如何在日志文件中保存xml错误消息?

PHP上传好像默认72dpi,我需要300dpi

javascript - 通过ajax向数据库发出持续请求的有效方法是什么?

php - 简单的 HTML DOM - 跳过某些元素

php - 使用 Simple Dom Parser 将 cURL 数据插入 mysql 时遇到问题

php - 解析 div 外部的元素以应用于 Div 内的数组(简单 HTML Dom 解析器)

php - 使用 PHP Simple HTML DOM Parser 查找带有类的 div

php - 缓冲递归 foreach 循环输出的函数式编程替代方案

php - 如何从 mySQL 创建这个 select2 Bootstrap 数组?

php - 使用 simple.html.dom 进行抓取并将结果放入数组中