繁体   English   中英

使用PHP Simple HTML DOM收集数据

[英]Scraping data using PHP Simple HTML DOM

我的结构是这样的:

<tr>
    <td>
        <strong>Tel. nr.:</strong>
        +370 000 000
        <strong>Faksas:</strong>
        +370 5 0000
    </td>
</tr>

我是使用简单HTML DOM的新手。 我需要的是内容+370000000+370 5 0000 我看到该库不支持Xpath,如何编写查询,可以在其中提取HTML链接<strong>Tel. nr.:</strong>后的内容<strong>Tel. nr.:</strong> <strong>Tel. nr.:</strong>

我发现只有一种方法,获取HTML和使用正则表达式从</strong><strong>获取文本,但是简单HTML DOM可能有自己的方法吗?

这样尝试...

   <?php
    require('simple_parser.php');
    $html = str_get_html('
    <tr>
        <td>
            <strong>Tel. nr.:</strong>
            +370 000 000
            <strong>Faksas:</strong>
            +370 5 0000
        </td>
    </tr>');
    $td =$html->find('td',0) ; 
    echo $td->plaintext;

    ?>

发布完整的代码以获得清晰的答案

您可以使用->find('text')来获取文本节点:

$sample_html = '
<table>
<tr>
    <td>
        <strong>Tel. nr.:</strong>
        +370 000 000
        <strong>Faksas:</strong>
        +370 5 0000
    </td>
</tr>
</table>
';

$html = str_get_html($sample_html);
foreach($html->find('tr') as $row) {
    $first_td = $row->find('td', 0);
    echo $first_td->find('text', 2);
    echo $first_td->find('text', 4);
}

但是这种解决方案相当笨拙。 删除元素上的这些换行符将产生另一个结果。

我建议将DOMDocument与xpath结合使用:

$dom = new DOMDocument;
$dom->loadHTML($sample_html);
$xpath = new DOMXpath($dom);
$elements = $xpath->query('//tr[1]/td[1]/text()');
foreach($elements as $e) {
    echo trim($e->textContent) . '<br/>';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM