Как извлечь гиперссылку используя php

0

Я искал в Интернете и думал, что это сработает, но это не по какой-то причине. Я пытаюсь извлечь гиперссылку, которая отображает только URL из HTML. Я только пытаюсь извлечь URL-адрес в пределах td align = "center". Вот пример HTML-документа, который я пытаюсь извлечь:

<td>
    Aug 17
</td>

<td>
    FT
</td>

<td align="right">
    <a href="site1">Arsenal ruby</a>
</td>

**<td align="center">**
    <a href="site2">1-3</a>
</td>

<td><a href="site3">Aston Villa</a></td>


<td style="text-align:right;">60,003</td>

И вот мой PHP-код, чтобы извлечь его из td align = "center":

<?php

//$searchURL = "site";
include 'simple_html_dom.php';

$site = 'website';
$html = file_get_html($site);

$tabledata = array();

// Find all TD tags with "align=center"
foreach($html->find('td[align=center]') as $e)
echo $e->href . '<br>';

?>

Я знаю, что код работает, потому что код может извлечь все, если это просто td в бараках.

  • 0
    Вы пробовали регулярные выражения? Смотрите preg_match
  • 0
    Вы хотите, чтобы td[align=center] a
Теги:
simple-html-dom

3 ответа

2
Лучший ответ

Таким образом, вы сами идентифицировали элементы <td>, но не дошли до следующего уровня вложенности, чтобы захватить href из элементов <a>. Вы можете сделать это вот так:

foreach($html->find('td[align=center]') as $e)
echo $e->children(0)->href . '<br>';
  • 0
    Это очень помогает. Где я могу найти хорошую документацию, которая объясняет это?
  • 0
    @Nic - здесь simplehtmldom.sourceforge.net/manual.htm, а здесь simplehtmldom.sourceforge.net/manual_api.htm
Показать ещё 2 комментария
1

Используйте DOM и Xpath:

Выбрать все элементы td в документе

//td

Только если атрибут align равен "center"

//td[@align="center"]

Получите вспомогательные элементы

//td[@align="center"]//a

Получить HREF узлы признак того, что a элементы

//td[@align="center"]//a/@href

Пример источника:

$html = <<<'HTML'
<td>
    FT
</td>
<td align="right">
    <a href="site1">Arsenal ruby</a>
</td>
**<td align="center">**
    <a href="site2">1-3</a>
</td>
<td><a href="site3">Aston Villa</a></td>
<td style="text-align:right;">60,003</td>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

$nodes = $xpath->evaluate('//td[@align="center"]//a/@href');
foreach ($nodes as $node) {
  var_dump($node->value);
}
0

Вы выбрали элемент td. Якорный элемент является дочерним элементом элемента td.

// Find all TD tags with "align=center"
foreach($html->find('td[align=center]') as $e)
echo $e->firstChild()->getAttribute('href') . '<br>';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню