PHP中的<tbody>故障简单的HTML DOM解析器

Xip*_*tec 7 php simple-html-dom

我正在使用PHP Simple HTML DOM Parser来抓取网店的一些数据(也运行XAMPP 1.7.2和PHP5.3.0),而且我遇到了<tbody>tag的问题.该表的结构是必要的(细节并不是那么重要):

<table>
  <thead>
    <!--text here-->
  </thead>
  <tbody>
    <!--text here-->
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试<tbody>使用代码进入该部分:

$element = $html->find('tbody',0)->innertext;
Run Code Online (Sandbox Code Playgroud)

它不会抛出任何错误,它只是在我试图回应时没有打印出来.我测试过的其他元素的代码,<thead>,<table>,甚至有点像<span class="price">,他们都做工精细(ofcourse,删除" 0"失败的代码).他们都给出了正确的部分.Outertext同上.但一切都失败了<tbody>.

现在,我已经浏览了Parser,但我不确定我是否能解决它.我注意到<thead>甚至没有提到,但它工作正常.

我想我可以尝试做儿童导航,但这似乎也有问题.我刚试过跑:

$el = $html->find('table',0);
$el2 = $el->children(2);
echo $el2->outertext;
Run Code Online (Sandbox Code Playgroud)

而且没有骰子.试图替换childrenfirst_child和2 1,和仍然没有骰子.有趣的是,如果我尝试->find而不是children,它的效果非常好.

我非常有信心我可以找到一个解决方案,但这种行为似乎很奇怪,可以在这里发布.我好奇的心灵很高兴得到所有的帮助.

小智 29

在simple_html_dom.php文件中注释或删除第396行

// if ($m[1]==='tbody') continue;
Run Code Online (Sandbox Code Playgroud)

  • 在版本1.5(修订版X)中,代码在行Ctrl + F"if($ m [1] ==='tbody')继续;" (3认同)
  • 在版本1.5(修订版196)中,代码位于第695行 (2认同)
  • 在版本1.5(修订版210)中,代码位于第701行 (2认同)

小智 1

确保您的tbody代码来自某些 javascript 执行。我在使用 span 标签时遇到了同样的问题。后来我发现,如果任何 html 代码通过 jquery/任何其他 javascript 执行进入页面,那么在这种情况下simple_html_dom就会失败。