我有一个问题,我不明白为什么会发生这种情况。在我有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还在学习,有什么建议吗?
答案 0 :(得分:0)
我找到了与此相关的解决方法
if($thumb[0]->{'data-thumb'} != '') {
$image = $thumb[0]->{'data-thumb'};
} else {
$image = $thumb[0]->src;
}
我不知道它是否是最好的方法,但是如果数据大拇指存在得到那个图像,它就有用,否则得到src。