如果有数据拇指,simple_html_dom将不会抓取图像src

时间:2014-03-28 14:43:44

标签: php image src simple-html-dom

我有一个问题,我不明白为什么会发生这种情况。在我有img内部数据拇指的一些元素上,它不会抓取图像src元素,我无法弄清楚原因。

以下是html页面格式化的示例。我们称之为somepage.com/search?q=singing

<div class="videos">
    <div class="thumbWrapper">
        <div class="postThumbnail">
           <img id="2019485" class="videoThumb" width="190" height="143" alt="some post title" src="http://imageurl.com/uploaded/image/3.jpg" category="7">
        </div>
    </div>
    <div class="thumbWrapper">
        <div class="postThumbnail">
           <img id="2019485" class="videoThumb" width="190" height="143" alt="some post title" data-thumb="http://imageurl.com/uploaded/image/3.jpg" src="http://imageurl.com/uploaded/image/3.jpg" category="7">
        </div>
    </div>
    <div class="thumbWrapper">
        <div class="postThumbnail">
           <img id="2019485" class="videoThumb" width="190" height="143" alt="some post title" data-thumb="http://imageurl.com/uploaded/image/3.jpg" src="http://imageurl.com/uploaded/image/3.jpg" category="7">
        </div>
    </div>
    <div class="thumbWrapper">
        <div class="postThumbnail">
           <img id="2019485" class="videoThumb" width="190" height="143" alt="some post title" src="http://imageurl.com/uploaded/image/3.jpg" category="7">
        </div>
    </div>
</div>

你看到某些图像上有数据缩略图,这是完全随机的,有些在同一页面上有一些,有些则没有。

以下是我抓页的方式

            $get = curl_init();
            curl_setopt($get, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
            curl_setopt($get, CURLOPT_URL, 'somepage.com/search?q=singing');
            curl_setopt($get, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($get, CURLOPT_CONNECTTIMEOUT, 10);
            $str = curl_exec($get);
            curl_close($get);

            $URL = str_get_html($str);

这是有效的,或者至少我看到它有效,下一步是从页面中提取元素并获得那些拇指。

            foreach($URL->find('div[class="thumbWrapper"]') as $video) {
                $thumb = $video->find('img[class="videoThumb"]');
                $image = $thumb[0]->src;
                }

而且我遇到了问题,在img元素上我有

data-thumb

它不会得到图像。

在simplehtmldom页面上,它只是说我需要像

一样使用
$video->find('img');
$thumb->src;

但是它不起作用,我必须指定img类并使用数组的[0]。但我想当数据拇指数组被移位时,src在数组中不再是[0]?

我不知道我刚开始使用simplehtmldom还在学习,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我找到了与此相关的解决方法

                if($thumb[0]->{'data-thumb'} != '') {
                    $image = $thumb[0]->{'data-thumb'};
                } else {
                    $image = $thumb[0]->src;
                }

我不知道它是否是最好的方法,但是如果数据大拇指存在得到那个图像,它就有用,否则得到src。