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