我有网站,我在特定div中发布了几张图片: -
<div class="posts">
<div class="separator">
<img src="http://www.example.com/image.jpg" />
<p>Be, where I am today, and i will be one where you will search me tomorrow</p>
</div>
<div class="separator">
<img src="http://www.example.com/imagesda.jpg" />
<p>Be, where I am today, and i will be one where you will search me tomorrow</p>
</div>
.... few more images
</div>
从我的第二个网站,我想获取该特定div上的所有图像..我有下面的代码。
<?php
$htmlget = new DOMDocument();
@$htmlget->loadHtmlFile('http://www.example.com');
$xpath = new DOMXPath( $htmlget);
$nodelist = $xpath->query( "//img/@src" );
foreach ($nodelist as $images){
$value = $images->nodeValue;
echo "<img src='".$value."' /><br />";
}
?>
但这是从我的网站获取所有图像,而不仅仅是特定的div。它还会打印出我的RSS
图片,Social icon
图片等,
我可以在php代码中指定特定div,以便它只从div.posts
类中获取图像。
答案 0 :(得分:0)
使用PHP Simple HTML Parser,这将是:
include('simple_html_dom.php');
$html=file_get_html("http://your_web_site.com");
foreach($html->find('div.posts img') as $img_posts){
echo $img_posts->src.<br>; // to show the source attribute
}
还在阅读PHP Simple HTML Dom解析器。到目前为止,它比正则表达式更快(在实现中)。
答案 1 :(得分:0)
首先为外部div容器提供“id”。然后通过它的id得到它。然后获取其子图像节点。
一个例子:
$tables = $dom->getElementsById('node_id');
$table = $tables->item(1);
//get the number of rows in the 2nd table
echo $table->childNodes->length;
//content of each child
foreach($table->childNodes as $child)
{
echo $child->ownerDocument->saveHTML($child);
}
这可能会对你有所帮助。它有一个很好的教程。 http://www.binarytides.com/php-tutorial-parsing-html-with-domdocument/
答案 2 :(得分:0)
这是另一个可能有用的代码。您正在寻找
doc->getElementsByTagName
可以帮助直接定位标签。
<?php
$myhtml = <<<EOF
<html>
<body>
<div class="posts">
<div class="separator">
<img src="http://www.example.com/image.jpg" />
<p>Be, where I am today, and i will be one where you will search me tomorrow</p>
</div>
<div class="separator">
<img src="http://www.example.com/imagesda.jpg" />
<p>Be, where I am today, and i will be one where you will search me tomorrow</p>
</div>
.... few more images
</div>
</body>
EOF;
$doc = new DOMDocument();
$doc->loadHTML($myhtml);
$divs = $doc->getElementsByTagName('img');
foreach ($divs as $div) {
foreach ($div->attributes as $attr) {
$name = $attr->nodeName;
$value = $attr->nodeValue;
echo "Attribute '$name' :: '$value'<br />";
}
}
?>
在这里演示http://codepad.org/keZkC377
此处的答案还可以提供进一步的见解 Not finding elements using getElementsByTagName() using DomDocument