Php 使用xpath和DOMDocument检索元素
我在下面的html代码中有一个广告列表。 我需要的是一个PHP循环来获取每个广告的以下元素:Php 使用xpath和DOMDocument检索元素,php,xpath,domdocument,Php,Xpath,Domdocument,我在下面的html代码中有一个广告列表。 我需要的是一个PHP循环来获取每个广告的以下元素: 广告URL(href属性的 我用下面的PHP代码获得了广告URL $d=newDOMDocument(); $d->loadHTML($ads);//变量$ads包含上面的HTML代码 $xpath=新的DOMXPath($d); $ls_ads=$xpath->query('//a'); foreach($ls_ads作为$ad){ $ad_url=$ad->getAttribute('href')
我用下面的PHP代码获得了广告URL
$d=newDOMDocument();
$d->loadHTML($ads);//变量$ads包含上面的HTML代码
$xpath=新的DOMXPath($d);
$ls_ads=$xpath->query('//a');
foreach($ls_ads作为$ad){
$ad_url=$ad->getAttribute('href');
打印(“广告URL:$AD_URL”);
}
但是我没有设法获得另外两个元素(图像url和标题)。有什么想法吗?对于其他元素,您只需执行相同的操作:
foreach ($ls_ads as $ad) {
$ad_url = $ad->getAttribute('href');
print("AD URL : $ad_url");
$ad_Doc = new DOMDocument();
$ad_Doc->documentElement->appendChild($ad_Doc->importNode($ad));
$xpath = new DOMXPath($ad_Doc);
$img_src = $xpath->query("//img[@src]");
$title = $xpath->query("//div[@class='title']");
}
我设法用这个代码得到了我所需要的(基于Khue Vu的代码):
$d=newDOMDocument();
$d->loadHTML($ads);//变量$ads包含上面的HTML代码
$xpath=新的DOMXPath($d);
$ls_ads=$xpath->query('//a');
foreach($ls_ads作为$ad){
//获取广告url
$ad_url=$ad->getAttribute('href');
//将当前ad对象设置为新的DOMDocument对象,以便我们可以对其进行分析
$ad_Doc=新的DOMDocument();
$cloned=$ad->cloneNode(真);
$ad_Doc->appendChild($ad_Doc->importNode($cloned,True));
$xpath=new-DOMXPath($ad_-Doc);
//获得广告标题
$ad_title_tag=$xpath->query(//div[@class='title']);
$ad_title=trim($ad_title_tag->item(0)->nodeValue);
//获取广告图像
$ad_image_tag=$xpath->query(“//img/@src”);
$ad_image=$ad_image_标记->项(0)->节点值;
}
我尝试了此操作,但得到了一个错误=>可捕获的致命错误:传递给DOMPATH的参数1::\u construct()必须是DOMDocumentHi的实例,我更新了答案。DOMPATH需要使用DOMDocument对象初始化。感谢您的帮助,但我仍然收到一个错误=>致命错误:调用成员函数appendChild()在非对象上。我如何修复它?您好,抱歉,我没有真正测试代码。您是否可以尝试传入True参数,如:$ad\u Doc->importNode($ad,True)
您可以引用,如果它仍然不正确