【问题标题】:getattribute and tag value using dom使用 dom 获取属性和标记值
【发布时间】:2014-04-29 07:46:13
【问题描述】:

有类似的线程可用。我看着他们并试图得到。在这里我可以得到地址值,但phone 号码和image url 没有来。

这里哪里出错了?

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);

更新

我添加了这个:

    $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

两次相同的网址?为什么我们只回显第 0 个数组值?

【问题讨论】:

  • 你在使用简单的 HTML DOM 解析器吗?
  • 只需使用一个独特的类来读取图像标签 $Imgcontainers = $html->find('div.photo-1 img');

标签: php dom


【解决方案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');
}

【讨论】:

  • 谢谢亲爱的,但它给了 - 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'); ,它给了's3-media3.ak.yelpcdn.com/bphoto/Pf2RTD8pNdy-oUnp-57m4Q/…...'
  • 使用$img[] = $cont-&gt;getAttribute('src');这样的数组变量就可以得到数组中的所有图片。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2016-08-14
  • 2013-01-12
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多