我使用下面的google API ajax来获取特定搜索字词的图片。这是在 WinForms 应用中完成的。
以下链接似乎有效,但它只返回4个结果(通过JSON)
任何人都知道如何更多地哄骗它?
http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Apple+Cake
显然必须有另一个参数来请求更多或分页结果,但我似乎无法弄明白?有人知道吗?
答案 0 :(得分:32)
我认为唯一的方法就是多次调用webservice来指定'start'参数。
http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Apple+Cake&start=4
start
参数是搜索结果中从0开始的索引。所以在这个例子中,它将返回图像4..7。
您还可以添加参数rsz=[1-8]
。默认值为4.这就是为什么每个请求获得4个结果的原因。这是一个链接:
http://code.google.com/apis/imagesearch/v1/jsondevguide.html#basic_query
答案 1 :(得分:13)
您可以使用“& rsz = 8”,请参阅下面的内容......
http://ajax.googleapis.com/ajax/services/search/video?q=SpongeBob%20Full&v=1.0&start=8&rsz=8
答案 2 :(得分:5)
对于那些想知道如何做到这一点的人,有很多方法。一种是基于某个事件运行循环查询。所以,例如......
var biebresults = [], start = 0;
function getBieb(startNumber){
$.getJSON("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Justin%20Bieber&start="+startNumber+"&callback=?", function(results){
biebresults.push(results.responseData.results);
if(biebresults.length < 538){
start = start + 4;
getBieb(start);
} else {
// Do something with your billion bieb images.
}
});
}
getBieb(start);
这段特殊的代码(使用jQuery,顺便说一句)将会抓住你最喜欢的流行歌星的前四张图片。从这里计算结果的数量,如果它不够,它将再次运行getBieb,除了这次startNumber参数增加。
答案 3 :(得分:2)
Google Feed提供了一个可选方法,您可以在其中指定编号。你想得到的结果。如果未指定此方法,则默认为no。你得到的结果是4,但要得到更多的没有。您可以按以下方式指定此可选方法;
feed.setNumEntries(int);
e-g:feed.setNumEntries(16); // will return 16 results.
.setNumEntries(num)设置由此加载的提要条目数 送到num。默认情况下,Feed类会加载四个条目。
.setNumEntries()没有返回值。
https://developers.google.com/feed/v1/reference#setNumEntries
答案 4 :(得分:1)
使用以下内容获得8个结果
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&start=0&q=".$query;
之后将用于循环,然后您就能获得64个结果
<?php
$search =str_replace(' ', '+', @$_GET["q"]);
$query = $search;
for ($i=1; $i < 100; $i+8) {
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&start=".$i."&q=".$query;
$body = file_get_contents($url);
$json = json_decode($body);
for($x=0;$x<count($json->responseData->results);$x++){
echo "<b>Result ".($x+1)."</b>";
echo "<br>URL: ";
?>
<a href="<?php echo $json->responseData->results[$x]->url; ?>" target="_blank"> <?php echo $json->responseData->results[$x]->url; ?> </a>
<?php
echo "<br>VisibleURL: ";
?>
<a href="http://<?php echo $json->responseData->results[$x]->visibleUrl; ?>" target="_blank"> <?php echo $json->responseData->results[$x]->visibleUrl; ?> </a>
<?php
echo "<br>Title: ";
echo $json->responseData->results[$x]->title;
echo "<br>Content: ";
echo $json->responseData->results[$x]->content;
echo "<br><br>";
}
$i+=8;
}
&GT;
答案 5 :(得分:0)
如果你想要你可以得到更多
public static void main(String[] args) throws UnsupportedEncodingException, IOException {
String google = "http://www.google.com/search?q=";
String search = "dinh la thang site:dantri.com.vn";
String charset = "UTF-8";
String userAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"; // Change this to your company's name and bot homepage!
System.out.println(URLEncoder.encode(search, charset));
int i=1;
while(i<100){
Elements links = Jsoup.connect(google + URLEncoder.encode(search, charset)+"&start="+i).userAgent(userAgent).get().select("li.g>h3>a");
for (Element link : links) {
String title = link.text();
//System.out.println(link.toString());
String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
//System.out.println(url);
url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");
if (!url.startsWith("http")) {
continue; // Ads/news/etc.
}
System.out.println(i+"Title: " + title);
System.out.println("URL: " + url);
} i=i+10;
}
}
}
答案 6 :(得分:0)
访问this link,了解您需要的方法:setResultSetSize(num)