使用simple_html_dom进行刮擦

时间:2012-08-29 10:00:38

标签: php simple-html-dom

我试图抓住这个:

<a id="pa1">Site1</a>
<font size="-1">Text1</font><br />
<font size="-1" color="green">Text2</font><br />

我很容易得到pa1 ..但是我想找到之后的两种字体..所以我用过这个:

$html = new simple_html_dom();
$html->load($document);

foreach ($html->find('#pa1>font') as $e) {
    $this->check_line_two = $this->process_array_elements($e->innertext);
}

foreach ($html->find('#pa1>font>font') as $e) {
    $this->check_line_three = $this->process_array_elements($e->innertext);
}

两者都不起作用。如何使用简单的html dom获取下一个元素?

3 个答案:

答案 0 :(得分:2)

font内没有后代#pa1 - 标记。

您显然正在寻找的是兄弟选择器+#pa1 + font。但我不知道你使用的库是否支持它。

请阅读他们的文档:http://simplehtmldom.sourceforge.net/manual.htm

答案 1 :(得分:2)

像费耶拉说的那样,那些字体元素不是锚的后代。尝试这样的事情:

foreach ($html->find('#pa1') as $e) {
    $firstFontElement = $e->next_sibling();
}

答案 2 :(得分:0)

如果这就是您要废弃的全部内容,为什么不选择字体标记。

foreach ($html->find('font') as $e) {
    $this->check_line_two = $this->process_array_elements($e->innertext);
}

或者文档中是否存在更多字体标记?