dyn*_*ous 6 javascript api search
首先,这不是重复:为什么谷歌搜索通过谷歌api返回不同的结果到网页搜索?也没有任何其他"谷歌搜索API返回意外结果"的问题,我已经能够找到.
我正在编写一个使用Google网络搜索API的小型JavaScript程序.我正在为我的购买页面创建自定义链接,该页面应该引导用户访问我们经销商网站上的正确页面,以便在他们点击"购买地点"时购买他们上次查看的产品.我使用document.referrer的javascript方法,然后解析URL以确定用户上次访问我网站上的哪个页面.
然后我创建一个合适的查询字符串,将网站限制为特定的经销商,告诉谷歌只返回一个结果然后运行查询.然后我使用URL将特定div href中的HTML重写为第一个(也是唯一的)搜索结果.我基本上模仿了Google曾经拥有的"我感觉很幸运"按钮的功能,但是以这样的方式构建查询,以便我得到我正在寻找的结果.
好的,所以既然你知道我在做什么以及为什么我这样做,这就是事情变得奇怪的事情:我得到的大部分结果都很完美.他们返回第一个搜索结果.其中一些(和它总是相同的)返回第二个搜索结果.
以下是您可以自行复制并粘贴到Code Playground的代码,以查看我所指的问题:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google AJAX Search API Sample</title>
<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1');
var SearchVariables = [
["alto","altomusic.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/altomusic-button.png","wp-image-6343"],
["acme","www.acmelectronics.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/acme-button.png","wp-image-6344"],
["bhphoto","www.bhphotovideo.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/bh-button3.png","wp-image-6345"],
["frontend","www.frontendaudio.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/frontend-button.png","wp-image-6346"],
["fullcompass","www.fullcompass.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/fullcompass-button3.png","wp-image-6347"],
["performance","www.performanceaudio.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/performance-audio-button.png","wp-image-6348"],
["proaudio","www.proaudiosuperstore.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/ProAudioSolutions-button.png","wp-image-6349"],
["rmc","www.rmcaudiodirect.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/rmc-button1.png","wp-image-6350"],
["sweetwater","www.sweetwater.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/sweetwater-button3.png","wp-image-6351"],
["vintageking","www.vintageking.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/vintageking-button3.png","wp-image-6352"]
];
var Search = new Array(SearchVariables.length);
function searchComplete() {
for(var i = 0; i < Search.length; i++){
if (Search[i].results && Search[i].results.length > 0) {
var contentDiv = document.getElementById(Search[i].ed[0]);
var curURL = Search[i].results[0].unescapedUrl;
var newImage = ' <a href="'+curURL+'"><img class="alignleft size-full '+Search[i].ed[2]+'" title="'+Search[i].ed[0]+'" src="'+Search[i].ed[1]+'" alt=" " width="235" height="94" /></a>';
contentDiv.innerHTML = newImage;
}
}
}
function parseURLString(inString)
{
var OutString = 'earthworks';
inString = inString.replace(/-/g,' ');
inString = inString.replace('zdt','');
var MicVsPre=['preamps','microphones'];
var idx = [];
for(var j=0;j<MicVsPre.length;j++)
{
if(inString.search(MicVsPre[j])>=0)
{
OutString = OutString+' '+MicVsPre[j];
for(var i=inString.length;i>0;i--)
{
if(inString[i]=='/')
{
idx.push(i);
}
}
OutString = OutString+' '+inString.substring(idx[0],idx[1]+1);
}
}
return OutString;
}
function OnLoad() {
var String_To_Parse = 'http://www.earthworksaudio.com/microphones/qtc-series-2/qtc40/';
var query = parseURLString(String_To_Parse);
var testloc = document.getElementById('vardiv');
testloc.innerHTML = query;
for(var i = 0; i < SearchVariables.length; i++)
{
Search[i] = new google.search.WebSearch();
Search[i].setNoHtmlGeneration();
Search[i].setResultSetSize(1);
Search[i].setUserDefinedLabel([SearchVariables[i][0],SearchVariables[i][2],SearchVariables[i][3]]);
Search[i].setSiteRestriction(SearchVariables[i][1]);
Search[i].setSearchCompleteCallback(this, searchComplete,null);
Search[i].execute(query);
}
}
google.setOnLoadCallback(OnLoad);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="vardiv">Testing</div>
<div id='acme'></div>
<div id='alto'></div>
<div id='bhphoto'></div>
<div id='fullcompass'></div>
<div id='frontend'></div>
<div id='performance'></div>
<div id='proaudio'></div>
<div id='rmc'></div>
<div id='sweetwater'></div>
<div id='vintageking'></div>
</body>
</html>?
Run Code Online (Sandbox Code Playgroud)
我已经包含了一个示例产品页面URL,而不是实际使用document.referrer方法(因为很明显你现在没有浏览我的网站)来演示最新情况.我还在顶部创建了一个额外的div标签,显示正在执行的确切搜索.
请注意如果您自己进行完全相同的搜索,列表中的最后一个(复古王,或者说是proaudio soltuions中的倒数第四个)都会下拉SECOND搜索结果的URL .但是大多数都正确地下拉了FIRST搜索结果(例如:sweetwater,b&h,全罗盘).我在这些特定网站上进行的几乎所有搜索都会发生这种情况.我知道这与我的浏览器和我存储的设置无关,因为我在其他计算机上,在不同的浏览器中尝试了这种隐身等等.有没有人知道这里发生了什么?为什么我总是无法将基于网络的Google搜索的第一个搜索结果作为返回的网址?
当我做类似的事情时,我遇到了这个问题,根据我当时发现的(iirc)返回的结果取决于您传递给谷歌的语言参数和浏览器ID字符串。
请注意,这可能会改变,虽然可能性不大,但值得检查。
编辑:
我刚刚看到您正在寻找某种答案的证据,所以在这里: http: //www.windmeadow.com/node/36 <-- Google 根据浏览器提供不同的搜索结果。 http://productforums.google.com/forum/#!topic/webmasters/7K02-AUCTVM <-- 不同语言的不同搜索结果
编辑2:
这是 Google AJAX API 中的一个已知错误:http://code.google.com/p/google-ajax-apis/issues/detail ?id=43
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |