Check for a word in Google's first page of results

I have a few different domain names and i'm trying to build a small screen to check to see if each of the domains appear on googles homepage for a particular search phrase.  I have tried this same technique with Yahoo and it works fine.  When I try it with google I get this message:

Forbidden
Your client does not have permission to get URL /search?hl=en&q=flowers&btnG=Google+Search from this server. (Client IP address: xx.xxx.xx.xx)

Please see Google's Terms of Service posted at http://www.google.com/terms_of_service.html ...

I'm passing two variables into the search one is the text to look for on the page and the other is the search phrase.

Any ideas why I can not do this or how this,  surely the http request is the same as me searching in my browser?

<%


strInputURL = "http://www.google.com/search?hl=en&q="& request("search")&"&btnG=Google+Search"


websiteurl = request("findtext")
Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
objXMLHTTP.Open "GET", strInputURL, False
objXMLHTTP.Send
strPageText = objXMLHTTP.responseText
Set objXMLHTTP = Nothing
if instr(strPageText,websiteurl) then
response.Write("Website is on the first page!!<br>") 

else

response.Write("Sorry your website is not on the first page :(<br><br>") 

end if

%>

Open in new window

LVL 9
djpazzaAsked:
Who is Participating?
 
leakim971Connect With a Mentor PluritechnicianCommented:
Chek the following :

(you will need to customize it to get same result as an usual google search)
<!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"/>
<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">

	google.load('search', '1');

	function searchComplete() {
		if(webSearch.results && webSearch.results.length>0) {
			var r = webSearch.results;
			for(var i=0;i<r.length;i++) {
				result = r[i];
				if( document.getElementById("findtext").value.indexOf(result.visibleUrl)>=0 ) {
					alert("your rank is : " + parseInt(i+1))
				}
			}
		}
		else {
			alert("no results!");
		}
		search.disabled = false;
		findtext.disabled = false;
	}

	var webSearch;
	
	function getRankFirstPage() {
		var search = document.getElementById("search");
		var findtext = document.getElementById("findtext");
		search.disabled = true;
		findtext.disabled = true;
		webSearch = new google.search.WebSearch();
		webSearch.setSearchCompleteCallback(this, searchComplete, null);
		webSearch.execute(search.value);
	}

	function OnLoad() {
	}

	google.setOnLoadCallback(OnLoad);

</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<!--
<div id="content">Loading...</div>
-->
<form id="form1" name="form1" method="get" action="">
<table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
    	<td width="280" scope="col">Search phrase</td>
	    <td width="220" scope="col"><label><input type="text" name="search" id="search" value="paulroach" /></label></td>
    </tr>
    <tr>
	    <td>Keyword or website address to search in results page</td>
    	<td><input type="text" name="findtext" id="findtext" value="www.paulroach.com" /></td>
    </tr>
    <tr>
	    <td>&nbsp;</td>
    	<td><label><input type="button" name="button" id="button" value="get ranking" onclick="getRankFirstPage()" /></label></td>
    </tr>
</table>
</form>
</body>
</html>

Open in new window

0
 
Om PrakashCommented:
When i added this code in asp page, i get following message:
"Website is on the first page"

please check the following thread:
http://www.google.com/support/forum/p/customsearch/thread?tid=77f6f7c75926ec20&hl=en
0
 
djpazzaAuthor Commented:
Your would need to pass some variables to it see it working I have another page doing this.  I have updated the code to submit the data on the same page.  So you type in the search word and a word to look for on the results page.

So when I search google.co.uk for flowers I know the words "Stunning Flowers" appear but I get this google permission error come up using the same on  my example code.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
if request("button") <>"" then

strInputURL = "http://www.google.com/search?hl=en&q=" & request("search")&"&btnG=Google+Search"


websiteurl = request("findtext")
Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
objXMLHTTP.Open "GET", strInputURL, False
objXMLHTTP.Send
strPageText = objXMLHTTP.responseText
Set objXMLHTTP = Nothing
if instr(strPageText,websiteurl) then
response.Write("Website is on the first page!!<br>") 

else

response.Write("Sorry your website is not on the first page :(<br><br>") 
response.Write strPageText
end if
end if

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="get" action="">
  <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="280" scope="col">Search phrase</td>
      <td width="220" scope="col"><label>
        <input type="text" name="search" id="search" />
      </label></td>
    </tr>
    <tr>
      <td>Keyword or website address to search in results page</td>
      <td><input type="text" name="findtext" id="findtext" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input type="submit" name="button" id="button" value="Submit" />
      </label></td>
    </tr>
  </table>
</form>
</body>
</html>

Open in new window

0
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

 
Om PrakashConnect With a Mentor Commented:
I think the server doesn't allow automated searches.
Read Google's Terms of Service page.
http://www.google.com/terms_of_service.html 
0
 
leakim971PluritechnicianCommented:
0
 
djpazzaAuthor Commented:
I have made a website using the search control / search api and tried querying that page but that does not work as the search results are not actually on the page.  As in when I view source the search results are not in the code.
0
 
djpazzaAuthor Commented:
Thanks leakim971 that looks like it may do the job however i need the result to print to the page not in alert box and need to be able to query it via a querystring.

I've had a bash but its not working correctly when i check the page result for a value over 0 it says found everytime.

<!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"/>
<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">

	google.load('search', '1');

	function searchComplete() {
		if(webSearch.results && webSearch.results.length>0) {
			var r = webSearch.results;
			for(var i=0;i<r.length;i++) {
				result = r[i];
				if( document.getElementById("findtext").value.indexOf(result.visibleUrl)>=0 ) {
					/*alert("your rank is : " + parseInt(i+1))*/
					document.getElementById("test").textContent = parseInt(i+1);
				}
			}
		}
		else {
			alert("no results!");
		}
		/*search.disabled = false;
		findtext.disabled = false;*/
	}

	var webSearch;
	
	function getRankFirstPage() {
		
		var search = document.getElementById("search");
		var findtext = document.getElementById("findtext");
		/*search.disabled = true;
		findtext.disabled = true;*/
		webSearch = new google.search.WebSearch();
		webSearch.setSearchCompleteCallback(this, searchComplete, null);
		webSearch.execute(search.value);
	}

	function OnLoad() {
	}

	google.setOnLoadCallback(OnLoad);

</script>
</head>
<body style="font-family: Arial;border: 0 none;" onload="getRankFirstPage();">
<!--
<div id="content">Loading...</div>
-->
<form id="form1" name="form1" method="get" action="">
<table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
    	<td width="280" scope="col"></td>
      <td width="220" scope="col"><input name="findtext" type="hidden" id="findtext" value="<%=request("findtext")%>" />
        <input name="search" type="hidden" id="search" value="<%=request("search")%>" /></td>
    </tr>
    <tr>
	    <td></td>
    	<td></td>
    </tr>
    <tr>
	    <td><span id="test"></span>&nbsp;</td>
    	<td></td>
    </tr>
</table>
</form>
</body>
</html>

Open in new window

0
 
leakim971PluritechnicianCommented:
Replace : document.getElementById("test").textContent = parseInt(i+1);
By: document.getElementById("test").innerHTML = parseInt(i+1);

0
 
djpazzaAuthor Commented:
Ok thanks will be back at work Tuesday will try that
0
 
djpazzaAuthor Commented:
Is that not the same as the code i'm already using just that .textcontent is limited to firefox ?
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
This question has been classified as abandoned and is being closed as part of the Cleanup Program. See my comment at the end of the question for more details.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.