我正在学习正则表达式,php& cUrl并想获得Google Image html (例如:https://www.google.fr/search?q=terrorist&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch&q=love) 我尝试了很多不同的答案,但我不明白为什么,当我做的时候出乎意料地
<?php
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($conn2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn2, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$get_page = curl_get_contents("https://www.google.fr/search?q=terrorist&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch&q=love");
echo $get_page;
?>
我的结果与浏览器完全不同。例如,所有图像链接都已死亡。 有谁知道为什么?我该怎么做才能解决它? Thanx很多!!
答案 0 :(得分:0)
此请求中有2个搜索查询,如下所示
https://www.google.fr/search 问=恐怖强>&安培; BIW = 1920&安培;波黑= 1008&安培;源= LNMS&安培; TBM = isch&安培; gws_rd = SSL#TBM = isch&安培; 问=爱强>
尝试
https://www.google.fr/search?q=love&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch
看起来它在浏览器中返回第一个查询然后运行第二个查询,但它不会通过curl执行第二个请求。
这对我有用:
<?php
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
var_dump(curl_error($ch));
curl_close($ch);
return $data;
}
$get_page = curl_get_contents("https://www.google.fr/search?q=love&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch");
echo $get_page;
?>
编辑:经过进一步的研究,这是一种不受支持的方式,你应该使用Google Custom Search API。您这样做会导致Google检测到滥用行为,并向您显示验证码请求,甚至可能阻止您。