如何使用php提取超链接

时间:2013-12-13 22:58:43

标签: php html html5 simple-html-dom

我在网上搜索过,认为这样可行,但不是出于某些原因。我正在尝试提取仅显示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。

3 个答案:

答案 0 :(得分:2)

因此,您已经识别了<td>个元素,但是您没有进入下一个嵌套级别以从href元素中获取<a>。你可以这样做:

foreach($html->find('td[align=center]') as $e)
echo $e->children(0)->href . '<br>';

答案 1 :(得分:1)

使用DOM和Xpath:

选择文档中的所有td元素

//td

仅当align属性等于“center”

//td[@align="center"]

获取子元素

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

获取a元素的href属性节点

//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);
}

答案 2 :(得分:0)

您选择了td元素。 anchor元素是td元素的子元素。

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