我正在使用DOM查找特定域中与特定域相关的所有链接。到目前为止,这个脚本工作得很好,除了它遍历该页面上的每个链接。我想要做的是尽量减少开销,直接找到包含域名一部分的任何链接<a>
,这样它只能获取这些链接并忽略其余的链接。
$anchors = $doc->getElementsByTagName('a');
获取所有链接,我可以在这里做些什么来获取包含例如google.com
网址的href的链接,这样其他脚本只关注那些链接?
$url = "http://en.wikipedia.org/wiki/Scrabble";
$input = @file_get_contents($url) or die("Could not access file: $url");
$doc = new DOMDocument();
$doc->loadHTML($input);
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $node) {
echo $node->textContent;
if ($node->hasAttributes()) {
foreach($node->attributes as $a) {
echo ' | '.$a->name.': '.$a->value;
echo "<br>";
}
echo "<br><br>";
}
}
答案 0 :(得分:2)
您可以使用xpath仅选择所需的项目
$xpath = new DOMXpath($doc);
$anchors = $xpath->query("//a[contains(@href, 'google.com')]");
// $anchors = $doc->getElementsByTagName('a');
foreach($anchors as $node) {