在某个标记之后提取节点的值

时间:2016-11-29 23:01:56

标签: php parsing

争取提取价值"输出"只有当标题是" ABCD(1,2)"用php。基本上,找到"输出(提取输出)。

以下是html的部分:

myArray = []
fo = open("file.txt", "r")
    for line in fo:
        for nbr in line.split():
            myArray.append(int(nbr))
print myArray

以下是我喜欢使用的代码:

<div class="wrap">
  <strong title="ABCD (1,2)" class="name">ABCD (1,2):</strong>
     <div id="test1">                                
       <div class="testclass" id="test2">
         <span>Output</span>
      </div>
     </div>
</div>

1 个答案:

答案 0 :(得分:0)

一种方法是在这种情况下使用xpath,使用一个可以选择所需元素的查询。获取具有 title 的元素并获取以下div,然后转到 span

示例(使用上面的标记):

$html = '
<div class="wrap">
    <strong title="ABCD (1,2)" class="name">ABCD (1,2):</strong>
    <div id="test1">                                
        <div class="testclass" id="test2">
            <span>Output</span>
        </div>
    </div>
</div>
';

$search_string = 'ABCD (1,2)';
$dom = new DOMDocument;
@$dom->loadHTML($html);
$query = "//strong[@title = '{$search_string}']/following-sibling::div/div/span";
$xpath = new DOMXpath($dom);
$result = $xpath->query($query);
if($result->length > 0) {
    echo $result->item(0)->nodeValue;
}