【问题标题】:Parse output using PHP Simple HTML DOM parser使用 PHP Simple HTML DOM 解析器解析输出
【发布时间】:2015-05-11 14:10:46
【问题描述】:

我正在使用这个库(PHP Simple HTML DOM parser)来解析链接,代码如下:

$htmlUrl = 'http://trailers.apple.com/trailers/independent/thelook/includes/playlists/web.inc';
$html = file_get_html($htmlUrl);

当我打印时:

print_r($html . "\n");

向我输出这个(html 树):

<h2>
  <span class="dropdown-handle" id="trailers-handle">
    <span id='single-trailer-info'>Info</span>
    <span class='button'>
...

然后我想在类中找到一个元素(下拉列表):

$divList = $html->find('.dropdown-list'); // tried find('.dropdown-list', 0);

然后我打印:

print_r($divList);

给我输出这个(数组):

simple_html_dom_node Object
(
    [nodetype] => 1
    [tag] => div
    [attr] => Array
        (
            [class] => dropdown-list
        )

    [children] => Array
...

永远解析!

我做错了吗? 有些链接有这个输出(数组)而不是输出(html树)。

感谢您的帮助:)

【问题讨论】:

  • 是的,这就是它的行为,它试图递归地获取这些元素,是的,它会变得又大又慢

标签: php parsing


【解决方案1】:

在 print_r 之前尝试 clear 或 close (对不起,我忘记了,只尝试一个然后另一个)。

$html->clear();

$html->close();

如果这不起作用,并且您知道要“查找”的对象是某种选择器类型,则应首先获取所有这些选择器类型。然后搜索它们,如果你能做到这一点,它会更快。因此,如果它是 &lt;select&gt;,首先找到所有这些,然后对它们运行 find,或者甚至不使用 find 并使用 foreachstrpos 自己解析它们。

如果这不起作用,请先尝试使用 wget 获取您的页面,然后在将它们保存到服务器后使用 html 简单 dom 解析它们。

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多