我想尝试从BING IMAGE SEARCH中抓取图像。
ex url:'http://www.bing.com/images/search?&q=anime+one+piece'
我正在使用curl&简单的html dom 然后我的代码就像这样..
$url = 'http://www.bing.com/images/search?&q=anime+one+piece';
$html = $curl->get($url);
$htmlx = new simple_html_dom();
$htmlx->load($html);
我接下来需要做的是,如何提取数据以获取图像ID,图像URL,图像POST URL,缩略图URL
到目前为止,我写这样的代码......
foreach($htmlx->find('div[class=imgpt]') as $article) {
echo $article->outertext;
}
它无法正常工作..因为只显示3个结果,如_i.gyazo.com/1d0526f505b5eb8f6ed2f43d82f5a837.png
答案 0 :(得分:0)
你需要从m
<a class="iusc"
中的simple_html_dom
属性中提取json并尝试不要使用simple_html_dom
它非常慢,在我的电脑中它花费时间超过30秒,而正则表达式0.000999秒
foreach($htmlx->find('div[class=imgpt]') as $article) {
$m = $article->getElementsByTagName("a")[0]->getAttribute("m");
$m = htmlspecialchars_decode($m[1]);
$m = json_decode($m);
printf('<p>Image ID: %s <br> Post URL:%s<br> Image URL:%s</p>', $m->cid, $m->purl, $m->murl);
}
解决方案
preg_match_all
$html = $curl->get($url);
preg_match_all('#m="(\{"[^"]+)#', $html, $imgs);
foreach($imgs[1] as $m){
$m = htmlspecialchars_decode($m);
$m = json_decode($m);
printf('<p>Image ID: %s <br> Post URL:%s<br> Image URL:%s</p>', $m->cid, $m->purl, $m->murl);
}
(正则表达式)解决方案
Curl error: Connection timed out after 2001 milliseconds