使用php在网页中查找css选择器

时间:2013-05-16 13:29:38

标签: php function parsing

我需要在网页中找到一些css选择器的存在,例如,如果一个网页有一个ID如下的div:<div id='header'> Smile </div>那么php函数应该返回true else {{1} } 如果网页的div具有类似这样的类:false则php函数返回值<div class='header'> Smile </div>true
我没有正确的想法这样做,我尝试过这样的事情:

false

但它输出了这个错误:
<?php include("parser.php"); //using simple html dom parser $datamain = file_get_html('http://stackoverflow.com/questions/14343073/how-to-count-an-array-content-and-assign-number-position-with-php'); //get the content $classHeader = $datamain->find('.header', 0); //check for div which has class .header if(!empty($classHeader)){ //now delete the div which has .header class if it is not empty foreach ($datamain->find('.classHeader') as $cclass){ $datamain = str_replace($cclass,"", $datamain); } } ?>
那么,如何检查css选择器是否存在以及是否存在,然后对此做些什么?
结果: http://simplehtmldom.sourceforge.net

2 个答案:

答案 0 :(得分:0)

为了在外部页面上像这样进行抓取,我使用cURL,strpos和substr。由于您不需要页面的实际内容,只是检查它以查看页面上是否有内容,您只需要cURL和strpos。因此,如果您从该URL中提取,它可能如下所示:

<?php

function checkPage($url=''){
    if(!$url){
        return false;
    }
    $soap_do = curl_init(); 
   curl_setopt($soap_do, CURLOPT_URL, $url );   
   curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 15); 
   curl_setopt($soap_do, CURLOPT_TIMEOUT, 15); 
   curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
   $result = curl_exec($soap_do);
   $data = htmlentities($result);
   //check for <div id="header" or <div class="header" or <div id='header'> or <div class='header'>
   if(strpos($data,"&lt;div id=&quot;header&quot;"&gt;) || strpos($data,"&lt;div class=&quot;header&quot;&gt;") || 
   strpos($data,"&lt;div id=&lsquo;header&lsquo;"&gt;) || strpos($data,"&lt;div class=&lsquo;header&lsquo;&gt;")){
       return true;
   }

       return false;

}//end function

$url = "http://stackoverflow.com/questions/14343073/how-to-count-an-array-content-and-assign-number-position-with-php";

if(checkPage($url)){
    //do something on success
}else{
    //do something on failure
}

答案 1 :(得分:0)

你的CSS选择器语法错误了。查找具有id“标题”的元素的正确语法是"#header"。查找具有class“标题”的元素的正确语法是".header"(用于查找div,而只有divclass “标题”,它是"div .header")。