2017-04-23 5 views
0

PHPを使用してウェブサイト上でいくつかの値を取得するにはどうすればよいですか(下の例のdivタグ、value1、value2、value3の間の値)DOMDocument、ウェブサイト上のいくつかの値を取得

私はDOMDocumentを調べていますが、混乱しています。

また、ウェブサイトを3回ロードせずに値を取得することはできますか?

例。

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

これは私が今持っているものであるが、それは愚かに見えると私は私がやっている100%わからない: 私は、ウェブサイトからの3つの値(またはそれ以上)を取得する必要があります

$doc = new DOMDocument; 

$doc->loadHTMLFile($url); 

$xpath = new DOMXPath($doc); 

$query1 = "//div[@class='SomeUniqueClassName']"; 
$query2 = "//div[@class='AnotherUniqueClassName']"; 
$query3 = "//div[@class='UniqueClassName']"; 

$entry1 = $xpath->query($query1); 
$value 1 = var_dump($entry1->item(0)->textContent); 

$entry2 = $xpath->query($query2); 
$value 2 = var_dump($entry2->item(0)->textContent); 

$entry3 = $xpath->query($query3); 
$value 3 = var_dump($entry3->item(0)->textContent); 
+0

使用CURLと正規表現(するpreg_match) –

+0

xpath->クエリは、ファイルをロードしません。 domに 'uniqueClassName'が含まれているときに' UniqueClass'を選択します。 Xpathは大文字小文字を区別します! - https://eval.in/781062 – splash58

+0

これは単なる例で、コードが一致するように更新します:) –

答えて

2

あなたはこのために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); 
+0

uniqueClassNameは単なる例でした:something、anotherclass、whoknows32 –

+0

@KennethPoulsenあなた自身の要件へのコード。 – cybermonkey

+0

カールを使うことが決まり、使いやすくなりました。助けてくれてありがとう。 –

0

をXPath式では、それはあなたの例を、以下の場合は、「含んでいる」修飾子を使用して試してみて、一意のクラスのために見ることができる

$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; 
    } 
} 
関連する問題