1 2<!DOCTYPE html> 3<html lang="en"> 4 <head> 5 <meta charset="utf-8"> 6 <meta name="baidu-site-verification" content="oI6a09dnmo" /> 7 <title>åºç¨ç¨åºè·åGoogleæç´¢ç»æï¼äºï¼ - Elric's Tech World</title> 8 <meta name="description" content="ä»ç»å¦æéè¿ç¨åºå»èªå¨è·åGoogleæç´¢ç»æï¼ä»ç»Google Ajax APIçä½¿ç¨æ¹æ³ï¼ä»¥åç¸åºçJavaç¨åºç¤ºä¾ã"> 9 <meta name="author" content="elric"> 10 11 <meta name="keywords" content="æç´¢,google,search,Java,Ajax"> 12 <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> 13 <!--[if lt IE 9]> 14
14<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
14 15 <![endif]--> 16 17 <!-- Le styles --> 18 <link href="/assets/themes/twitter/css/1.4.0/bootstrap.css" rel="stylesheet"> 19 <link href="/assets/themes/twitter/css/style.css?body=1" rel="stylesheet" type="text/css" media="all"> 20 21 <!-- Le fav and touch icons --> 22 <!-- Update these with your own images 23 <link rel="shortcut icon" href="images/favicon.ico"> 24 <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 25 <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png"> 26 <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png"> 27 --> 28 </head> 29 30 <body> 31 32 <div class="topbar"> 33 <div class="fill"> 34 <div class="container"> 35 <a class="brand" href="/">Elric's Tech World</a> 36 <ul class="nav"> 37 38 39 40 41 42 43 44 45 46 <li><a href="/archive.html">å ¨é¨æç« </a></li> 47 48 49 50 51 52 53 54 <li><a href="/categories.html">åç±»</a></li> 55 56 57 58 59 60 61 62 <li><a href="/tags.html">æ ç¾</a></li> 63 64 65 66 67 68 69 70 <li><a href="/about.html">å ³äºElric</a></li> 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 </ul> 97 </div> 98 </div> 99 </div> 100 101 <div class="container"> 102 103 <div class="content"> 104 105<div class="page-header"> 106 <h1>åºç¨ç¨åºè·åGoogleæç´¢ç»æï¼äºï¼ <small></small></h1> 107</div> 108 109<!-- JiaThis Button BEGIN --> 110<div class="jiathis_style"> 111 <span class="jiathis_txt">å享å°ï¼</span> 112 <a class="jiathis_button_tsina">æ°æµªå¾®å</a> 113 <a class="jiathis_button_tqq">è ¾è®¯å¾®å</a> 114 <a class="jiathis_button_renren">人人ç½</a> 115 <a class="jiathis_button_douban">è±ç£</a> 116 <a class="jiathis_button_twitter">Twitter</a> 117 <a class="jiathis_button_email">é®ä»¶</a> 118 <a href="http://www.jiathis.com/share?uid=1822214" class="jiathis jiathis_txt jiathis_separator jtico jtico_jiathis" target="_blank">æ´å¤</a> 119 <a class="jiathis_counter_style"></a> 120</div><br>
121<script type="text/javascript" src="http://v3.jiathis.com/code_mini/jia.js?uid=1822214" charset="utf-8"></script>
121 122<!-- JiaThis Button END --> 123<hr> 124<div class="row"> 125 <div class="span10"> 126 127<p><a href="/a/google_search_api_1.html">ä¸ç¯</a>ç®åä»ç»äºä¸ä¸å©ç¨Google Ajax Search APIå®ç°å¨Javaåºç¨ç¨åºä¸è®¿é®Googleæç´¢å¹¶è·åæç´¢ç»æçæ¹æ³åçï¼è¿ç¯å°ä¸»è¦è´´åºå 段代ç ï¼ä¿©ç®çï¼</p> 128 129<p>ä¸ï¼ä½ä¸ºä¸ä¸ç¯çé£äºç论ç¥è¯çä¸ä¸ªå®ä¾ï¼ç´è§å°å±ç°ä¸ä¸å°åºæä¹ç©ï¼</p> 130 131<p>äºï¼éè¿é¢åå¯¹è±¡çææ³ï¼å¾å°ä¸ºèé¸çº§äººç©ï¼è¿è°ä¸ä¸ææ³ï¼æ±åè° ï¼ï¼å°è¿ä¸ªAPIè¿è¡äºç®åçå°è£ ï¼å®ç°äºä¸ä¸ªGoogleSearcherç±»ï¼ä»¥å±è½URLConnectionè¿æ¥ç½ç»ãè§£æJSONå符串è¿äºå¤æçç»èãï¼å°è¯´ä¸ä¸ï¼è¿äºä»£ç è°ä¸ä¸ä»»ä½çæé®é¢ï¼ä½ è¦æ¯è§å¾è¿æ¹ä¾¿å°±é便æ¿çç¨ï¼</p> 132 133<p>GoogleSearcherç±»ï¼</p> 134 135<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">/**</span> 136 <span class="p">*</span> <span class="p">@</span><span class="n">author</span> <span class="n">Elric</span> 137 <span class="p">*/</span> 138<span class="k">package</span> <span class="n">google</span><span class="p">;</span> 139 140<span class="n">import</span> <span class="n">java</span><span class="p">.</span><span class="n">io</span><span class="p">.*;</span> 141<span class="n">import</span> <span class="n">java</span><span class="p">.</span><span class="n">net</span><span class="p">.*;</span> 142 143<span class="p">//</span> <span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">json</span><span class="p">.</span><span class="n">JSONException</span><span class="p">;</span> 144<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">json</span><span class="p">.</span><span class="n">JSONObject</span><span class="p">;</span> 145<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">json</span><span class="p">.</span><span class="n">JSONArray</span><span class="p">;</span> 146 147<span class="k">public</span> <span class="n">class</span> <span class="n">GoogleSearcher</span> <span class="p">{</span> 148 149 <span class="k">public</span> <span class="n">GoogleSearcher</span><span class="p">()</span> <span class="p">{</span> 150 <span class="n">this</span><span class="p">(</span><span class="m">4</span><span class="p">);</span> 151 <span class="p">}</span> 152 153 <span class="k">public</span> <span class="n">GoogleSearcher</span><span class="p">(</span><span class="n">int</span> <span class="n">amount</span><span class="p">)</span> <span class="p">{</span> 154 <span class="n">this</span><span class="p">.</span><span class="n">amountOfResults</span> <span class="p">=</span> <span class="n">amount</span><span class="p">;</span> 155 <span class="n">this</span><span class="p">.</span><span class="n">searchResults</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span> 156 <span class="p">}</span> 157 158 <span class="k">public</span> <span class="n">void</span> <span class="n">search</span><span class="p">(</span><span class="k">String</span> <span class="n">keyword</span><span class="p">)</span> <span class="p">{</span> 159 <span class="n">this</span><span class="p">.</span><span class="n">keyword</span> <span class="p">=</span> <span class="n">keyword</span><span class="p">;</span> 160 <span class="n">searchResults</span> <span class="p">=</span> <span class="n">new</span> <span class="n">GoogleSearchResult</span><span class="p">[</span><span class="n">amountOfResults</span><span class="p">];</span> 161 <span class="n">URL</span> <span class="n">url</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span> 162 <span class="k">String</span> <span class="n">urlString</span> <span class="p">=</span> <span class="n">generalUrl</span> <span class="p">+</span> <span class="n">keyword</span><span class="p">.</span><span class="n">replaceAll</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">s+"</span><span class="p">,</span> <span class="s2">"%20"</span><span class="p">);</span>
163 <span class="n">try</span> <span class="p">{</span> 164 <span class="n">JSONArray</span> <span class="n">jsonArr</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span> 165 <span class="n">int</span> <span class="n">index</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> 166 167 <span class="n">for</span> <span class="p">(</span><span class="n">int</span> <span class="n">i</span><span class="p">=</span><span class="m">0</span><span class="p">;</span> <span class="n">i</span><span class="p"><</span><span class="n">amountOfResults</span><span class="p">;</span> <span class="p">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> 168 <span class="k">if</span> <span class="p">(</span><span class="n">jsonArr</span> <span class="p">==</span> <span class="n">null</span> <span class="p">||</span> <span class="n">index</span> <span class="p">>=</span> <span class="n">jsonArr</span><span class="p">.</span><span class="n">length</span><span class="p">())</span> <span class="p">{</span> 169 <span class="n">url</span> <span class="p">=</span> <span class="n">new</span> <span class="n">URL</span><span class="p">(</span><span class="n">urlString</span> <span class="p">+</span> <span class="s2">"&start="</span> <span class="p">+</span> <span class="n">i</span><span class="p">);</span> 170 <span class="p">//</span> <span class="nf">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">url</span><span class="p">);</span> 171 <span class="n">URLConnection</span> <span class="n">conn</span> <span class="p">=</span> <span class="n">url</span><span class="p">.</span><span class="n">openConnection</span><span class="p">();</span> 172 <span class="n">conn</span><span class="p">.</span><span class="n">addRequestProperty</span><span class="p">(</span><span class="s2">"Referer"</span><span class="p">,</span> 173 <span class="s2">"http://www.informatik.uni-trier.de/~ley/db/"</span><span class="p">);</span> 174 175 <span class="n">StringBuilder</span> <span class="n">builder</span> <span class="p">=</span> <span class="n">new</span> <span class="n">StringBuilder</span><span class="p">();</span> 176 <span class="n">BufferedReader</span> <span class="n">br</span> <span class="p">=</span> <span class="n">new</span> <span class="n">BufferedReader</span><span class="p">(</span> 177 <span class="n">new</span> <span class="n">InputStreamReader</span><span class="p">(</span><span class="n">conn</span><span class="p">.</span><span class="n">getInputStream</span><span class="p">(),</span> <span class="s2">"utf-8"</span><span class="p">));</span> 178 <span class="k">String</span> <span class="n">line</span><span class="p">;</span> 179 <span class="k">while</span> <span class="p">((</span><span class="n">line</span> <span class="p">=</span> <span class="n">br</span><span class="p">.</span><span class="n">readLine</span><span class="p">())</span> <span class="c1">!= null) { 180</span> <span class="n">builder</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">);</span> 181 <span class="p">}</span> 182 <span class="n">br</span><span class="p">.</span><span class="n">close</span><span class="p">();</span> 183 <span class="p">//</span> <span class="nf">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">builder</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span> 184 <span class="n">jsonArr</span> <span class="p">=</span> <span class="n">new</span> <span class="n">JSONObject</span><span class="p">(</span><span class="n">builder</span><span class="p">.</span><span class="n">toString</span><span class="p">()).</span>
185 <span class="n">getJSONObject</span><span class="p">(</span><span class="s2">"responseData"</span><span class="p">).</span><span class="n">getJSONArray</span><span class="p">(</span><span class="s2">"results"</span><span class="p">);</span> 186 <span class="n">index</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> 187 <span class="p">}</span> 188 <span class="n">JSONObject</span> <span class="n">jsonObj</span> <span class="p">=</span> <span class="n">jsonArr</span><span class="p">.</span><span class="n">getJSONObject</span><span class="p">(</span><span class="n">index</span><span class="p">);</span> 189 <span class="n">GoogleSearchResult</span> <span class="n">result</span> <span class="p">=</span> <span class="n">new</span> <span class="n">GoogleSearchResult</span><span class="p">();</span> 190 <span class="n">result</span><span class="p">.</span><span class="n">setGSearchResultClass</span><span class="p">(</span> 191 <span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"GsearchResultClass"</span><span class="p">));</span> 192 <span class="n">result</span><span class="p">.</span><span class="n">setUnescapedUrl</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"unescapedUrl"</span><span class="p">));</span> 193 <span class="n">result</span><span class="p">.</span><span class="n">setUrl</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"url"</span><span class="p">));</span> 194 <span class="n">result</span><span class="p">.</span><span class="n">setVisibleUrl</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"visibleUrl"</span><span class="p">));</span> 195 <span class="n">result</span><span class="p">.</span><span class="n">setCacheUrl</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"cacheUrl"</span><span class="p">));</span> 196 <span class="n">result</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"title"</span><span class="p">));</span> 197 <span class="n">result</span><span class="p">.</span><span class="n">setTitleNoFormatting</span><span class="p">(</span> 198 <span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"titleNoFormatting"</span><span class="p">));</span> 199 <span class="n">result</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">jsonObj</span><span class="p">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"content"</span><span class="p">));</span> 200 <span class="n">searchResults</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="n">result</span><span class="p">;</span> 201 202 <span class="p">++</span><span class="n">index</span><span class="p">;</span> 203 <span class="p">}</span> 204 <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span> 205 <span class="n">searchResults</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span> 206 <span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
207 <span class="p">}</span> 208 <span class="p">}</span> 209 210 <span class="p">/*</span> <span class="k">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="k">String</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span> 211 <span class="n">GoogleSearcher</span> <span class="n">gs</span> <span class="p">=</span> <span class="n">new</span> <span class="n">GoogleSearcher</span><span class="p">(</span><span class="m">16</span><span class="p">);</span> 212 <span class="n">gs</span><span class="p">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"Paris Hilton"</span><span class="p">);</span> 213 <span class="n">GoogleSearchResult</span><span class="p">[]</span> <span class="n">rs</span> <span class="p">=</span> <span class="n">gs</span><span class="p">.</span><span class="n">getSearchResults</span><span class="p">();</span> 214 <span class="n">for</span> <span class="p">(</span><span class="n">int</span> <span class="n">i</span><span class="p">=</span><span class="m">0</span><span class="p">;</span> <span class="n">i</span><span class="p"><</span><span class="n">rs</span><span class="p">.</span><span class="n">length</span><span class="p">;</span> <span class="p">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> 215 <span class="nf">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">rs</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">getUnescapedUrl</span><span class="p">());</span> 216 <span class="p">}</span> 217 <span class="p">}</span> <span class="p">*/</span> 218 219 <span class="k">public</span> <span class="k">String</span> <span class="n">getKeyword</span><span class="p">()</span> <span class="p">{</span> 220 <span class="n">return</span> <span class="n">keyword</span><span class="p">;</span> 221 <span class="p">}</span> 222 <span class="k">public</span> <span class="n">int</span> <span class="n">getAmountOfResults</span><span class="p">()</span> <span class="p">{</span> 223 <span class="n">return</span> <span class="n">amountOfResults</span><span class="p">;</span> 224 <span class="p">}</span> 225 <span class="k">public</span> <span class="n">void</span> <span class="n">setAmountOfResults</span><span class="p">(</span><span class="n">int</span> <span class="n">amountOfResults</span><span class="p">)</span> <span class="p">{</span> 226 <span class="n">this</span><span class="p">.</span><span class="n">amountOfResults</span> <span class="p">=</span> <span class="n">amountOfResults</span><span class="p">;</span> 227 <span class="n">this</span><span class="p">.</span><span class="n">searchResults</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span> 228 <span class="p">}</span> 229 <span class="k">public</span> <span class="n">GoogleSearchResult</span><span class="p">[]</span> <span class="n">getSearchResults</span><span class="p">()</span> <span class="p">{</span> 230 <span class="n">return</span> <span class="n">searchResults</span><span class="p">;</span> 231 <span class="p">}</span> 232 233 <span class="n">protected</span> <span class="k">String</span> <span class="n">keyword</span><span class="p">;</span> 234 <span class="n">protected</span> <span class="n">int</span> <span class="n">amountOfResults</span><span class="p">;</span> 235 <span class="n">protected</span> <span class="n">GoogleSearchResult</span><span class="p">[]</span> <span class="n">searchResults</span><span class="p">;</span> 236 <span class="n">protected</span> <span class="n">final</span> <span class="k">String</span> <span class="n">generalUrl</span> <span class="p">=</span> 237 <span class="s2">"http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&q="</span><span class="p">;</span> 238<span class="p">}</span> 239</code></pre></div></div> 240 241<p>GoogleSearchResultç±»ï¼</p> 242 243<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">/**</span> 244 <span class="p">*</span> <span class="p">@</span><span class="n">author</span> <span class="n">Elric</span> 245 <span class="p">*/</span> 246<span class="k">package</span> <span class="n">google</span><span class="p">;</span> 247 248<span class="k">public</span> <span class="n">class</span> <span class="n">GoogleSearchResult</span> <span class="p">{</span> 249 250 <span class="k">public</span> <span class="k">String</span> <span class="n">getSearchResultClass</span><span class="p">()</span> <span class="p">{</span>
251 <span class="n">return</span> <span class="n">gSearchResultClass</span><span class="p">;</span> 252 <span class="p">}</span> 253 <span class="k">public</span> <span class="n">void</span> <span class="n">setGSearchResultClass</span><span class="p">(</span><span class="k">String</span> <span class="n">searchResultClass</span><span class="p">)</span> <span class="p">{</span> 254 <span class="n">this</span><span class="p">.</span><span class="n">gSearchResultClass</span> <span class="p">=</span> <span class="n">searchResultClass</span><span class="p">;</span> 255 <span class="p">}</span> 256 <span class="k">public</span> <span class="k">String</span> <span class="n">getUnescapedUrl</span><span class="p">()</span> <span class="p">{</span> 257 <span class="n">return</span> <span class="n">unescapedUrl</span><span class="p">;</span> 258 <span class="p">}</span> 259 <span class="k">public</span> <span class="n">void</span> <span class="n">setUnescapedUrl</span><span class="p">(</span><span class="k">String</span> <span class="n">unescapedUrl</span><span class="p">)</span> <span class="p">{</span> 260 <span class="n">this</span><span class="p">.</span><span class="n">unescapedUrl</span> <span class="p">=</span> <span class="n">unescapedUrl</span><span class="p">;</span> 261 <span class="p">}</span> 262 <span class="k">public</span> <span class="k">String</span> <span class="n">getUrl</span><span class="p">()</span> <span class="p">{</span> 263 <span class="n">return</span> <span class="n">url</span><span class="p">;</span> 264 <span class="p">}</span> 265 <span class="k">public</span> <span class="n">void</span> <span class="n">setUrl</span><span class="p">(</span><span class="k">String</span> <span class="n">url</span><span class="p">)</span> <span class="p">{</span> 266 <span class="n">this</span><span class="p">.</span><span class="n">url</span> <span class="p">=</span> <span class="n">url</span><span class="p">;</span> 267 <span class="p">}</span> 268 <span class="k">public</span> <span class="k">String</span> <span class="n">getVisibleUrl</span><span class="p">()</span> <span class="p">{</span> 269 <span class="n">return</span> <span class="n">visibleUrl</span><span class="p">;</span> 270 <span class="p">}</span> 271 <span class="k">public</span> <span class="n">void</span> <span class="n">setVisibleUrl</span><span class="p">(</span><span class="k">String</span> <span class="n">visibleUrl</span><span class="p">)</span> <span class="p">{</span> 272 <span class="n">this</span><span class="p">.</span><span class="n">visibleUrl</span> <span class="p">=</span> <span class="n">visibleUrl</span><span class="p">;</span> 273 <span class="p">}</span> 274 <span class="k">public</span> <span class="k">String</span> <span class="n">getCacheUrl</span><span class="p">()</span> <span class="p">{</span> 275 <span class="n">return</span> <span class="n">cacheUrl</span><span class="p">;</span> 276 <span class="p">}</span> 277 <span class="k">public</span> <span class="n">void</span> <span class="n">setCacheUrl</span><span class="p">(</span><span class="k">String</span> <span class="n">cacheUrl</span><span class="p">)</span> <span class="p">{</span> 278 <span class="n">this</span><span class="p">.</span><span class="n">cacheUrl</span> <span class="p">=</span> <span class="n">cacheUrl</span><span class="p">;</span> 279 <span class="p">}</span> 280 <span class="k">public</span> <span class="k">String</span> <span class="n">getTitle</span><span class="p">()</span> <span class="p">{</span> 281 <span class="n">return</span> <span class="n">title</span><span class="p">;</span> 282 <span class="p">}</span> 283 <span class="k">public</span> <span class="n">void</span> <span class="n">setTitle</span><span class="p">(</span><span class="k">String</span> <span class="n">title</span><span class="p">)</span> <span class="p">{</span> 284 <span class="n">this</span><span class="p">.</span><span class="n">title</span> <span class="p">=</span> <span class="n">title</span><span class="p">;</span> 285 <span class="p">}</span> 286 <span class="k">public</span> <span class="k">String</span> <span class="n">getTitleNoFormatting</span><span class="p">()</span> <span class="p">{</span>
287 <span class="n">return</span> <span class="n">titleNoFormatting</span><span class="p">;</span> 288 <span class="p">}</span> 289 <span class="k">public</span> <span class="n">void</span> <span class="n">setTitleNoFormatting</span><span class="p">(</span><span class="k">String</span> <span class="n">titleNoFormatting</span><span class="p">)</span> <span class="p">{</span> 290 <span class="n">this</span><span class="p">.</span><span class="n">titleNoFormatting</span> <span class="p">=</span> <span class="n">titleNoFormatting</span><span class="p">;</span> 291 <span class="p">}</span> 292 <span class="k">public</span> <span class="k">String</span> <span class="n">getContent</span><span class="p">()</span> <span class="p">{</span> 293 <span class="n">return</span> <span class="n">content</span><span class="p">;</span> 294 <span class="p">}</span> 295 <span class="k">public</span> <span class="n">void</span> <span class="n">setContent</span><span class="p">(</span><span class="k">String</span> <span class="n">content</span><span class="p">)</span> <span class="p">{</span> 296 <span class="n">this</span><span class="p">.</span><span class="n">content</span> <span class="p">=</span> <span class="n">content</span><span class="p">;</span> 297 <span class="p">}</span> 298 299 <span class="n">protected</span> <span class="k">String</span> <span class="n">gSearchResultClass</span><span class="p">;</span> 300 <span class="n">protected</span> <span class="k">String</span> <span class="n">unescapedUrl</span><span class="p">;</span> 301 <span class="n">protected</span> <span class="k">String</span> <span class="n">url</span><span class="p">;</span> 302 <span class="n">protected</span> <span class="k">String</span> <span class="n">visibleUrl</span><span class="p">;</span> 303 <span class="n">protected</span> <span class="k">String</span> <span class="n">cacheUrl</span><span class="p">;</span> 304 <span class="n">protected</span> <span class="k">String</span> <span class="n">title</span><span class="p">;</span> 305 <span class="n">protected</span> <span class="k">String</span> <span class="n">titleNoFormatting</span><span class="p">;</span> 306 <span class="n">protected</span> <span class="k">String</span> <span class="n">content</span><span class="p">;</span> 307<span class="p">}</span> 308</code></pre></div></div> 309 310<p>代ç 说æï¼</p> 311 312<p>GoogleSearchResultç±»ï¼è¿ä¸ªç±»å®ä¹äºå¾å¤å段ï¼è¿äºå段åå«å¯¹åºJSONåç¬¦ä¸²ä¸æ¯æ¡æç´¢è®°å½çåä¸ªå±æ§ï¼ååé½ä¸æ ·ï¼ï¼ç¶åå®ä¹äºååæ®µçgetteråsetterï¼ä» æ¤èå·²ï¼å æ¤è¿ä¸ªç±»å°±æ¯å°æ¯æ¡æç´¢è®°å½å°è£ äºèµ·æ¥ï¼æ¯ä¸ªGoogleSearchResult对象就对åºä¸æ¡æç´¢è®°å½ã</p> 313 314<p>GoogleSearcherç±»ï¼æä»¬ä»å段çæï¼å çgeneralUrlå符串ï¼è¿å°±æ¯Ajax APIæä¾ç»æä»¬çURLï¼åªä¸è¿å ³é®è¯è¿ä¸ªå±æ§æä»¬è¿æ²¡æå¡«ï¼çå®é è¿è¡çæ¶åæ¸¸ç¨æ·å¨ææ·»å ï¼å¦å¤è¿ä¸ªURLéå¤äºä¸ªrsz屿§ï¼è¿ä¸ªå±æ§çä½ç¨æä»¬å¾ ä¼åè§£éãkeywordåæ®µï¼å¾æ¾ç¶ï¼å°±æ¯ç¨æ·è¾å ¥çå ³é®è¯ãamountOfResultsï¼è¿æ¯å¹²ä»ä¹çå¢ï¼å½æä»¬å¨æµè§å¨ä¸Googleä¸ä¸ªå ³é®è¯åï¼Googleè¿åçè¯å®ä¸æ¢ä¸æ¡æç´¢ç»æï¼è¿ä¸ªAPIä¹ä¸æ ·ï¼ä¹æ¯è¿å夿¡è®°å½ï¼èamountOfResultsè¿ä¸ªå段就æ¯ç¨äºè®¾ç½®è®°å½çæ¡æ°çãè¿ä¹è§£éäºä¸ºä»ä¹searchResultsåæ®µæ¯ä¸ä¸ªGoogleSearchResultæ°ç»ï¼è䏿¯ä¸ä¸ªGoogleSearchResult对象ãè¿ä¸ªæ°ç»çé¿åº¦å°±æ¯amountOfResultsã</p> 315 316<p>åçæé å¨ï¼æé å¨éé¢åå§åäºamountOfResultsåæ®µï¼é»è®¤ä¸º4æ¡ã注æï¼è¿é并没æå¨æé å¨ä¸åå§åkeywordåæ®µï¼å 为æå¸æå°è¿ä¸ªGoogleSearcher类设计æä¸ä¸ªSearcherå¯ä»¥è¿è¡å¤æ¬¡æç´¢ï¼æç´¢å¤ä¸ªå ³é®è¯ï¼æä»¥æå¹¶æ²¡æéæ©å¨åå§åçæ¶å设置keywordã</p> 317 318<p>æ¥ä¸æ¥å°±æ¯æä»¬ç主ä½ï¼search()æ¹æ³ï¼è¿ä¸ªæ¹æ³å°±æ¯æä»¬è¦ç¨çæç´¢æ¹æ³äºï¼åæ°keywordå°±æ¯è¦æç´¢çå ³é®è¯ãè¿ä¸ªæ¹æ³è¿åçæ¯voidï¼å¨è°ç¨è¯¥æ¹æ³åéè¦è°ç¨GoogleSearchResult()æ¹æ³æ¥è·åæç´¢ç»æãæä»¬è¿å ¥search()æ¥çä¸ä¸æåªäºéè¦æ³¨æä¸ä¸ã</p> 319 320<ol> 321 <li>第28è¡ï¼å°å ³é®è¯ä¸çç©ºæ ¼æ¿æ¢æâ%20âï¼å¨URLä¸ç©ºæ ¼éè¦ç¨è½¬ä¹å符â%20â表示ï¼</li> 322 <li>
322第33è¡ï¼for循ç¯ï¼å¾æ¾ç¶æ¯è·åamountOfResultsæ¡æç´¢ç»æãä¸é¢çifæ¯åä»ä¹çå¢ï¼å¯ä»¥çå°ï¼è¿æ¥å°ç½ç»ä»¥åä»ç½ç»è·åæç´¢ç»æçé¨å齿¯å¨ifä¸ï¼èä¸å¨for循ç¯ä¸å¯è½éè¦å¤æ¬¡è®¿é®ç½ç»ãè¿æ¯å 为Ajax APIæ¯ä»¥é¡µçå½¢å¼è¿åæç´¢ç»æçï¼æ¯ä¸é¡µä¸åªå å«è¥å¹²æ¡æç´¢è®°å½ï¼å¦æéè¦æ´å¤çæç´¢è®°å½ï¼å°±éè¦å¤æ¬¡è¿æ¥ç½ç»ãå¦ä½ä½¿è¿äºä¸åçè¿æ¥è½è·å¾ä¸åçè®°å½å¢ï¼éè¿URLä¸âstartâ屿§è®¾ç½®ãè¿ä¸ªå±æ§ç¨äºè®¾ç½®å½åè·åç页æ¯ä»ç¬¬å æ¡è®°å½å¼å§çãä¾å¦æä»¬è·åäºä¸é¡µï¼è¿ä¸é¡µéæç¬¬0~3æ¡è®°å½ï¼ç°å¨è¦è·å第4æ¡è®°å½ï¼å°±éè¦å访é®ä¸æ¬¡ç½ç»ï¼å¹¶å°URLä¸start设为4ï¼æä»¬ä¼åè·å¾ä¸é¡µï¼å ¶ä¸å å«äºç¬¬4~7æ¡è®°å½ï¼ä»¥æ¤ç±»æ¨ãè¿æ¶åå°±å¯ä»¥è§£éå颿å°çrsz屿§äºï¼è¿ä¸ªå±æ§å°±æ¯è®¾ç½®ä¸é¡µä¸è®°å½çæ¡æ°ï¼large表示æ¯é¡µ8æ¡è®°å½ãæ´å¤å ³äºURLä¸å¯ç¨å±æ§ç说æå¯è®¿é®<a href="http://code.google.com/apis/ajaxsearch/documentation/reference.html#_intro_fonje">http://code.google.com/apis/ajaxsearch/documentation/reference.html#_intro_fonje</a>ã</li> 323 <li>第50è¡ï¼è§£æJSONå符串ï¼è·åå ¶ä¸çresultsé¨åï¼è¿é¨åæ¯ä¸ä¸ªå å«å¤æ¡æç´¢è®°å½çJSONæ°ç»ï¼ç¬¬54è¡æ¯è·åJSONæ°ç»ä¸ä»£è¡¨æ¯ä¸æ¡æç´¢è®°å½çJSON对象ï¼åé¢å è¡å°±æ¯æåJSON对象ä¸çä¿¡æ¯ï¼å¹¶å°è£ å°ä¸ä¸ªGoogleSearchResult对象ä¸ï¼å½¢æä¸ä¸ªæç´¢è®°å½ã第66è¡ï¼å°è¿æ¡æç´¢è®°å½åæ¾å°searchResultsæ°ç»ä¸ï¼ä»¥ä¾¿éè¿è°ç¨GoogleSearchResult()æ¹æ³æ¥è·åè¿amountOfResultsæ¡æç´¢è®°å½ã</li> 324</ol> 325 326<p>è¡¥å 说æï¼</p> 327 328<ul> 329 <li>è¿äºä»£ç ä¸åªç»åºäºä¸ä¸ªåºæ¬çæç´¢åè½çå®ç°ï¼Ajax APIæä¾çURLè¿æä¸äºå±æ§å¯ä»¥è®¾ç½®ï¼åæ¶è¿åçJSONå符串ä¸é¤æç´¢ç»æä»¥å¤è¿å å«å ¶å®ä¿¡æ¯ï¼å¦æä½ çåºç¨ç¨åºéè¦ç¨å°è¿äºå±æ§æè è¿äºä¿¡æ¯ï¼å¯ä»¥åèGoogleæä¾çææ¡£ãåæä¸å å«äºé¨åææ¡£é¡µç龿¥ã</li> 330 <li>è¦ç¥éæç´¢åªæ¯ç¬¬ä¸æ¥ï¼æä»¬éè¿æµè§å¨Googleä¸ä¸ªå ³é®è¯æ¶æ¯éè¦æå¼æç´¢ç»æä¸é¾æ¥ç页é¢ï¼ä»ä¸æ¾åºæä»¬æ³è¦çä¿¡æ¯ãå¦ä½è®©æä»¬çåºç¨ç¨åºä»æç´¢ç»æææåç页é¢ä¸è·åæä»¬éè¦çä¿¡æ¯ï¼ææ¶æä»¬è¿éè¦ä»æç´¢ç»æä¸æéåºåªä¸æ¡è®°å½ææ¯æåæä»¬æ³è¦ç页é¢ï¼ï¼è¿äºææ¯éè¦å¤§å¦é®çã</li> 331</ul> 332 333 <hr> 334 <div class="pagination"> 335 <ul> 336 337 <li class="prev"><a href="/a/google_search_api_1.html" title="åºç¨ç¨åºè·åGoogleæç´¢ç»æï¼ä¸ï¼">← Previous</a></li> 338 339 <li><a href="/archive.html">Archive</a></li> 340 341 <li class="next"><a href="/a/nginx_location.html" title="Nginx Location使ç¨è¯¦è§£">Next →</a></li> 342 343 </ul> 344 </div> 345 <hr> 346 347 348 349 <div id="disqus_thread"></div>
350<script type="text/javascript"> 351 352 var disqus_shortname = 'elric2011'; // required: replace example with your forum shortname 353 354 /* * * DON'T EDIT BELOW THIS LINE * * */ 355 (function() { 356 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 357 dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 358 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 359 })(); 360</script>
360 361<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 362<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a> 363 364 365 366 367 </div> 368 369 <div class="span4"> 370 <h4>Published</h4> 371 <div class="date"><span>29 July 2010</span></div> 372 373 374 <h4>Tags</h4> 375 <ul class="tag_box"> 376 377 378 379 380 381 382 <li><a href="/tags.html#æç´¢-ref">æç´¢ <span>2</span></a></li> 383 384 <li><a href="/tags.html#google-ref">google <span>2</span></a></li> 385 386 <li><a href="/tags.html#search-ref">search <span>2</span></a></li> 387 388 <li><a href="/tags.html#Java-ref">Java <span>6</span></a></li> 389 390 <li><a href="/tags.html#Ajax-ref">Ajax <span>2</span></a></li> 391 392 393 394 395 396 </ul> 397 398 </div> 399</div> 400 401 402 </div> 403 404 <footer> 405 <p>© elric 2011 406 </p> 407 </footer> 408 409 </div> <!-- /container --> 410 411 412 413 414
414<script type='text/javascript'> 415!function(e,t,n,g,i){e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},n=t.createElement("script"),tag=t.getElementsByTagName("script")[0],n.async=1,n.src=('https:'==document.location.protocol?'https://':'http://')+g,tag.parentNode.insertBefore(n,tag)}(window,document,"script","assets.growingio.com/2.1/gio.js","gio"); 416 gio('init', '856f9b16c13aad4b', {}); 417 418gio('send'); 419</script>
419 420 421 422 423 424 425 426
426<script type="text/javascript"> 427var jiathis_config = {data_track_clickback:'true'}; 428</script>
vendor: 1 bytes, line 428
428
429<script type="text/javascript" src="http://v3.jiathis.com/code/jiathis_r.js?move=0&btn=r2.gif&uid=1366511011022909" charset="utf-8"></script>
429 430 431 432 433 </body> 434</html> 435
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.