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