使用Simple Html Dom刮擦Bing图像

时间:2017-06-23 23:37:28

标签: php html dom

我想尝试从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

1 个答案:

答案 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="(\{&quot;[^"]+)#', $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