从 li 标签中提取 data-href

Extracting data-href from li tag

我正在尝试从 data-href 中提取 URL,但遇到了一些麻烦。它没有标签。所以我不知道如何获取 data-href 属性。网址在这里:https://www.proud-web.jp/search/kansai/area/osaka/

这是我要的数据:

<div class="box-search-result">
            <form action="/module/material/SiryoOrderTop.xphp" method="GET" name="favoritebox" target="_blank">
                    <ul class="list-search-result">
                        <li class="list-search-result-item" data-href="https://www.proud-web.jp/kansai/mansion/shimizudani/" 

这是我的代码:

$url = 'https://www.proud- web.jp/search/kansai/area/osaka/';
$parser = getSiteContent($url);

$link = [];
$allDivs = [];
$allDivs = $parser->getElementsByTagName('div');
    foreach ($allDivs as $div) {
      if ($div->getAttribute('class') == 'box-search-result') {
          $linkRef = $div->getAttribute('data-href');
          var_dump($linkRef);

   }
}

我怎样才能拿到data-href的URL?任何的想法?谢谢! 顺便说一句,我正在使用 DOMparser。

您想从每个 div 中获取 li 元素,然后获取 data-href 属性。您只是想从 div

中获取它
$allDivs = $parser->getElementsByTagName('div');
    foreach ($allDivs as $div) {
      if ($div->getAttribute('class') == 'box-search-result') {
          $allLi = $div->getElementsByTagName('li');
          foreach ($allLi as $li){
          $linkRef = $li->getAttribute('data-href');
          var_dump($linkRef);
          }

   }
}

我不是 100% 确定此处的 domParser 语法,但问题与您获取 div 而不是 li 相同。您可能需要循环遍历 $div 变量的 childNodes 属性 并检查 nodeName 是否为 ul 然后循环遍历 childNodes 属性 的那些寻找 li 作为 nodeName 例如

$allDivs = $parser->getElementsByTagName('div');
        foreach ($allDivs as $div) {
          if ($div->getAttribute('class') == 'box-search-result') {
              foreach($div->childNodes as $node) {
                   if($node->nodeName == 'ul') {
                        foreach($node->childNodes as $liNode) {
                             if ($liNode->nodeName == 'li') {
                                 $linkRef = $liNode->getAttribute('data-href');
                                 var_dump($linkRef);
                             }
                        }
                   }
              }

       }
    }