我试图从网页中提取标题和描述,使用DOMdocument(),我成功地提取了这样的标题
$d=new DOMDocument();
$d->loadHTML($html);
$title=$d->getElementsByTagName("title")->item(0)->textContent;
我可以通过循环遍历所有meta tags
并检查name="desctiption"
属性来提取描述,但是循环会使进程变慢,因此想要知道是否可以使用某个属性提取内容的直接方法php DOMdocument中的选择器??
答案 0 :(得分:2)
使用php的get_meta_tags()功能。
你可以这样做:
$d=new DOMDocument();
$d->loadHTML($html);
$title=$d->getElementsByTagName("title")->item(0)->textContent;
$meta = get_meta_tags($html);
$description = $meta["description"];
答案 1 :(得分:1)
我不认为这可以单独使用DOMDocument,但可以与DOMXPath结合使用:
$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dom - Xpath test</title>
<meta name="description" content="The first description meta tag" />
<meta name="keywords" content="none, no-keywords" />
<meta name="description" content="the second description tag" />
</head>
<body>
<p>This is the test HTML</p>
</body>
</html>
';
$dom = new DOMDocument();
$dom->loadHTML($html);
$domx = new DOMXPath($dom);
$desc = $domx->query("//meta[@name='description']");
$i = 0;
while ($item = $desc->item($i++)) {
echo '<p>'.$item->getAttribute('content').'</p>';
}