Извлечение data-href из тега li - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь извлечь URL-адрес data-href, но столкнулся с некоторой проблемой.у него нет тега.поэтому я не знаю, как получить атрибут 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, кстати.

1 Ответ

0 голосов
/ 09 октября 2018

вы хотите получить элемент li из каждого div, а затем получить атрибут 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.Возможно, вам придется просмотреть свойство childNodes ваших переменных $div и проверить, является ли 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);
                             }
                        }
                   }
              }

       }
    }
...