2014-04-29 99 views
0

也有类似的线程可用。我看着他们,试图得到。在这里我可以得到地址值,但phone号码和image url不在。使用dom获取属性和标记值

我在哪里犯错?

function getData($url){ 
     $containers1 = $html->find('div.mapbox div.mapbox-text strong.street-address address'); 
    foreach($containers1 as $container) 
    { 
     $comments = $container->find('span'); 
     $item = new stdClass(); 
     foreach($comments as $comment) 
     { 
      $address.= $comment->plaintext; //append the content of each span 
     } 
     echo $address; // this gives correct result 
    } 
    $containers2 = $html->find('div.mapbox div.mapbox-text span.biz-phone'); 
    $phone = $containers2->innertext; 
     echo "<br/>".$phone."<br/>"; // no result 
    $Imgcontainers = $html->find('div.js-photo photo photo-1 div.showcase-photo-box img'); 
     echo $Imgcontainers->getAttribute('src'); // Fatal error: Call to a member function getAttribute() on a non-object 
} 
    } 
    $url = 'http://www.yelp.com/biz/locanda-san-francisco?start=40'; 
    $root = getData($url); 

UPDATE

我加了这一点:

$Imgcontainers = $html->find('div.photo-1 img'); 
    foreach($Imgcontainers as $cont){    
     $img[] = $cont->getAttribute('src');    
    } 
    echo $img[0]; 

http://s3-media3.ak.yelpcdn.com/bphoto/Pf2RTD8pNdy-oUnp-57m4Q/ls.jpghttp://s3-media3.ak.yelpcdn.com/bphoto/Pf2RTD8pNdy-oUnp-57m4Q/ls.jpg

相同的URL两次?为什么两次,虽然我们仅回显第0个数组值?

+0

是否使用简单的HTML DOM解析器? –

+1

只需使用一个独特的类来读取图像标签$ Imgcontainers = $ html-> find('div.photo-1 img'); – Manibharathi

回答

1

使用此代码

foreach($containers1 as $container) 
{ 
    $comments = $container->find('span'); 
    $item = new stdClass(); 
    foreach($comments as $comment) 
    { 
     $address.= $comment->plaintext; //append the content of each span 
    } 
    echo $address; // this gives correct result 
} 
$containers2 = $html->find('div.mapbox div.mapbox-text span.biz-phone'); 
foreach($containers2 as $contact){ 
    $phone = $contact->plaintext; 
} 
echo "<br/>".$phone."<br/>"; // no result 
$Imgcontainers = $html->find('div.photo-1 img'); 
foreach($Imgcontainers as $cont){ 
    echo $cont->getAttribute('src'); 
} 
+0

谢谢亲爱的,但它给 - - http://s3-media3.ak.yelpcdn.com/bphoto/Pf2RTD8pNdy-oUnp-57m4Q/ls.jpg//s3-media2.ak.yelpcdn.com/photo/qifZoydAoHDzenurxpsM0Q/ 30s.jpg'我把它改成'find('div.showcase-photo-box img'); '给出'http://s3-media3.ak.yelpcdn.com/bphoto/Pf2RTD8pNdy-oUnp-57m4Q/ls.jpghttp://s3-media3.ak.yelpcdn.com/bphoto/WWcu9lz65KLtOTsFZnIHPw/ls.jpghttp: //s3-media2.ak.yelpcdn.com/bphoto/NWYEgpRzMiAFrGvs_6aQAQ/ls.jpghttp://s3-media4.ak.yelpcdn.com/bphoto/hQKPu2XQ8YUUBvkZgfvXcA/180s.jpghttp://s3-media1.ak.yelpcdn。 com/bphoto/Njz41l4ku_uQLuwqiuLIu ...' – user123

+1

使用像'$ img [] = $ cont-> getAttribute('src')这样的数组变量;'然后我们可以获得数组中的所有图像。 – Manibharathi

+0

请参阅我的更新问题 – user123