simplehtmldom php:你如何搜索一件事或另一件事

时间:2009-07-25 01:32:41

标签: php screen-scraping

我想在php中使用简单的html dom刮一些html。我有一堆包含标签的标签。我想要的代码在bgcolor=#ffffffbgcolor=#cccccc之间切换。有一些标签有其他bg颜色。

我想获得每个标记中包含bgcolor=#ffffffbgcolor=#cccccc的所有代码。我不能只使用$ html-> find('tr'),因为还有其他我不想找的标签。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以将DOM加载到simplexml类中,然后使用xpath,如下所示:

$xml = simplexml_import_dom($simple_html_dom);

$goodies = $xml -> xpath('//[@bgcolor = "#ffffff"] | //[@bgcolor = "#cccccc"]');

您甚至可以将OR语法放在同一组括号中,但我需要仔细检查。


更新

抱歉,我以为你在谈论DOM扩展。我只是查找了simpledomhtml,它的查找功能似乎松散地基于XPath。为什么不这样做:

$goodies = $html -> find('[bgcolor=#ffffff], [bgcolor="#cccccc]');

答案 1 :(得分:1)

你也可以使用simplehtmldom

这是我解决问题的方法

<?php

include_once "simple_html_dom.php";

// the html code example
$html = '<table>
    <tr bgcolor="#ffffff"><td>1</td></tr>
    <tr bgcolor="#cccccc"><td>2</td></tr>
    <tr bgcolor="#ffffff"><td>3</td></tr>
    </table>';

// in this case I load the html code via string
$code = str_get_html($html);

// find elem by attribute
$trs = $code -> find('tr[bgcolor=#ffffff]');
foreach($trs as $tr){
    echo $tr -> innertext;
}
$trs = $code -> find('tr[bgcolor=#cccccc]');
foreach($trs as $tr){
    echo $tr -> innertext;
}

?>