我怎样才能从网站上获得特定的div?

时间:2017-07-24 17:08:05

标签: php html xpath domdocument domxpath

我正在尝试从网站获取一个特定的div元素(即带有属性$( ".saveTaskEdit" ).click(function(event) { var ta = $('.task_title').val(); var da = $('.task_description').val(); var taskID = $('.editTaskPanel').attr('data-id'); $.ajax({ type: "post", url: "task-edit.php?t="+ ta + "&d=" + da + "&id=" + taskID, contentType: "application/x-www-form-urlencoded", success: function(responseData, textStatus, jqXHR) { jQuery('p.status').text('Task Saved'); }, error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); } }) }); ),但我几乎得到了所有元素。你知道什么是错的吗?

id="vung_doc"

2 个答案:

答案 0 :(得分:0)

更改

$query = "//*[@class='vung_doc']";

$query = "//*[@id='vung_doc']";

答案 1 :(得分:0)

实际上,似乎一个元素同时具有值​​ vung_doc id class 属性,其文本中包含许多段落内容。也许你认为每个段落都应该在它自己的 div 元素中。

<div id="vung_doc" class="vung_doc" style="font-size: 18px;">
    <p></p>
    "Mayor song..."

在这篇文章底部的屏幕截图中,我为该元素添加了一个大纲样式,以显示该元素中有多少个段落。

如果您想分隔段落,可以使用preg_split()拆分任何换行符:

$entries = $xpath->query($query);

foreach($entries as $entry) {
    $paragraphs = preg_split("/[\r\n]+/s",$entry->textContent);
    foreach($paragraphs as $paragraph) {
        if (trim($paragraph)) {            
            echo '<b>paragraph:</b> '.$paragraph;
            break;
        }
    }
}

查看此in this playground example的演示。请注意,在加载HTML文件之前,会调用libxml_use_internal_errors()来抑制XML错误:

libxml_use_internal_errors(true);

添加了大纲的目标 div 元素的屏幕截图:

screenshot