Извлечение ссылок из конкретной таблицы - PullRequest
0 голосов
/ 05 июня 2019

У меня есть HTML-код со многими HTML-таблицами.Я хочу извлечь ссылки из конкретной, которая имеет конкретный div выше.

Вот мой пример кода:

        <div class="boxuniwersal_header">Table 1</div>
        <img src="img/boxuniwersal_top.gif" width="210" height="18" alt="" style="margin-top: 5px" />
        <div class="boxuniwersal_content">
          <div class="boxuniwersal_subcontent">
            <div class='menu_m1'><table cellpadding="3"><tr><td><a href="http://link.com"><img src="some.jpg"  width="45" /></a></td><td><a href="http://link.com">Some text</a></td></tr></table></div>
            <br />
          </div>
        </div>
        <!-- /box  -->

        <!-- box  -->
        <div class="boxuniwersal_header">Table 2</div>
        <img src="img/boxuniwersal_top.gif" width="210" height="18" alt="" style="margin-top: 5px" />
        <div class="boxuniwersal_content">
          <div class="boxuniwersal_subcontent">
            <div class='menu_m1'><table cellpadding="3"><tr><td><a href="http://link2.com"><img src="some2.jpg"  width="45" /></a></td><td><a href="http://link2.com">Some text2</a></td></tr></table></div>
            <br />
          </div>
        </div>
$domXPath = new DOMXPath($domDocument);
$results = $domXPath->query("//div/div/table/tr/td/a|//table//tr/td//a"); //querying domdocument
foreach($results as $result)
{
    $links[]=$result->getAttribute("href");
}

Этот код возвращает все ссылки.Я хочу получить только ссылки из Таблицы1.Возможно ли это?

1 Ответ

0 голосов
/ 05 июня 2019

Ваша основная проблема - просто настроить выражение XPath для выбора правильного XML.

Если вы измените свой XPath на

//div[text()="Table 1"]/following-sibling::div[1]//table//a

, то сначала нужно найти элемент <div>чей текст тот, который вы после.

Часть following-sibling::div[1] будет смотреть на первый элемент <div> на том же уровне, что и уже выбранный элемент <div> (это тот, где <table>).

Последняя часть просто ищет все элементы <a> внутри включающего <table>.

...