Php DOMDocument,在网站上获取多个值

Php DOMDocument,在网站上获取多个值,php,Php,如何使用PHP在网站上获取多个值(以下示例中div标记、value1、value2、value3之间的值) 我一直在查看文档,但感到困惑 此外,是否有可能在不加载网站3次的情况下获取值 例如。 我需要从网站上获取3个(或更多)值: <div class="SomeUniqueClassName">value1</div> <div class="AnotherUniqueClassName">value2</div> <div class="

如何使用PHP在网站上获取多个值(以下示例中div标记、value1、value2、value3之间的值)

我一直在查看文档,但感到困惑

此外,是否有可能在不加载网站3次的情况下获取值

例如。 我需要从网站上获取3个(或更多)值:

<div class="SomeUniqueClassName">value1</div>
<div class="AnotherUniqueClassName">value2</div>
<div class="UniqueClassName">value3</div>

您应该为此使用CURL:

 $curl = curl_init();    
         curl_setopt($curl, CURLOPT_URL,'http://theurlhere.com');
         //Optional, if the target URL use SSL
         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$parse = curl_exec($curl);
         curl_close($curl);

    preg_match_all('/<div class="uniqueClassName([0-9])">(.*)<\/div>/', $parse, $value);

    print_r($value);
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,'http://theurlhere.com');
//可选,如果目标URL使用SSL
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
$parse=curl\u exec($curl);
curl_close($curl);
preg_match_all(“/(.*)/”,$parse,$value);
打印(价值);

对此,您应该使用CURL:

 $curl = curl_init();    
         curl_setopt($curl, CURLOPT_URL,'http://theurlhere.com');
         //Optional, if the target URL use SSL
         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$parse = curl_exec($curl);
         curl_close($curl);

    preg_match_all('/<div class="uniqueClassName([0-9])">(.*)<\/div>/', $parse, $value);

    print_r($value);
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,'http://theurlhere.com');
//可选,如果目标URL使用SSL
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
$parse=curl\u exec($curl);
curl_close($curl);
preg_match_all(“/(.*)/”,$parse,$value);
打印(价值);

对于XPath表达式,您可以尝试使用“contains”限定符并查找唯一类(如果它遵循您的示例)

$dom = new DOMDocument;
$dom->loadHTMLFile( $url );
$xp = new DOMXPath( $dom );


$query="//div[ contains( @class,'UniqueClass' ) ]";
$col=$xp->query( $query );
if( $col && $col->length > 0 ){
    foreach( $col as $node ){
        echo $node->item(0)->nodeValue;
    }
}
或者修改XPath表达式以搜索多个条件,如:

$query="//div[@class='UniqueClass1'] | //div[@class='UniqueClass2'] | //div[@class='UniqueClass3']";
$col=$xp->query( $query );
if( $col && $col->length > 0 ){
    foreach( $col as $node ){
        echo $node->item(0)->nodeValue;
    }
}

对于XPath表达式,您可以尝试使用“contains”限定符,并查找唯一类(如果它遵循您的示例)

$dom = new DOMDocument;
$dom->loadHTMLFile( $url );
$xp = new DOMXPath( $dom );


$query="//div[ contains( @class,'UniqueClass' ) ]";
$col=$xp->query( $query );
if( $col && $col->length > 0 ){
    foreach( $col as $node ){
        echo $node->item(0)->nodeValue;
    }
}
或者修改XPath表达式以搜索多个条件,如:

$query="//div[@class='UniqueClass1'] | //div[@class='UniqueClass2'] | //div[@class='UniqueClass3']";
$col=$xp->query( $query );
if( $col && $col->length > 0 ){
    foreach( $col as $node ){
        echo $node->item(0)->nodeValue;
    }
}

使用CURL和regex(preg_match)xpath->query不加载文件。当dom包含
uniqueClassName
时,选择
UniqueClass
。Xpath区分大小写!-这只是一些示例,我将更新代码,使它们匹配:)使用CURL和regex(preg_match)xpath->query不加载文件。当dom包含
uniqueClassName
时,选择
UniqueClass
。Xpath区分大小写!-这只是一个例子,我会更新代码使它们匹配:)uniqueClassName只是一个例子,可以是:某物,另一个类,whoknows32@KennethPoulsen您需要根据自己的需求调整代码。决定使用curl,更易于使用。谢谢你的帮助。uniqueClassName只是一个例子,可以是:某物,另一个类,whoknows32@KennethPoulsen您需要根据自己的需求调整代码。决定使用curl,更易于使用。谢谢你的帮助。