2016-05-10 3 views
-1

HTMLページをスクラップしたい。私は同じことをするためにPHPでcURLを使用しています。 特定の<div>コンテンツをスクラップできます。次の作業のコードPHPでネストされたimgをスクレイプするための正規表現

<?php 

    $curl = curl_init('https://www.someUrl.com'); 
    curl_setopt_array($curl, array( CURLOPT_ENCODING  => '', 
             CURLOPT_FOLLOWLOCATION => FALSE, 
             CURLOPT_FRESH_CONNECT => TRUE, 
             CURLOPT_SSL_VERIFYPEER => FALSE, 
             CURLOPT_REFERER  => 'http://www.google.com', 
             CURLOPT_RETURNTRANSFER => TRUE, 
             CURLOPT_USERAGENT  => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 
             CURLOPT_VERBOSE  => FALSE)); 
    $page = curl_exec($curl); 
    if(curl_errno($curl)) 
    { 
     echo 'Scraper error: ' . curl_error($curl); 
     exit; 
    } 
    curl_close($curl); 

    $regex = '/<div class="someDiv">(.*?)<\/div>/s'; 

    if (preg_match_all($regex, $page, $result)){ 
     echo $result[1][0]; 
    } 
    else{ 
     print "Not found"; 
    } 
?> 

で、すなわち

<div class="someDiv">ABC</div> 

今私は<span>内にネスト<img>をこすりしたいです。次のように私はこすりするコードは次のとおりです。

<span class="thumbnail"> 
    <img src="image.gif" width="20" data-thumb="blabla/photo.jpg" height="20" alt="abc" > 
</span> 

私はclass="thumbnail"を持つ<span>内にネスト<img>タグからdata-thumbを取得したいです。

答えて

2

ここでは、すなわち、DOMXpathとともにDOMDocumentのようなHTMLパーサを使用し、don't use regex to parse html ...再度行く:

<?php 
... 
$page = curl_exec($curl); 
$dom = new DOMDocument(); 
$dom->loadHTML($page); 
$xpath = new DOMXpath($dom); 
foreach ($xpath->query("//span[@class='thumbnail']/img") as $img){ 
    echo $img->getAttribute('data-thumb'); 
} 
関連する問題