PageRankr 3.0.2 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Change Log
2
2
 
3
+ ## Version 3.1.0
4
+ * Add yahoo index back
5
+ * Fix yahoo and google backlinks and indexes
6
+ * Improve PageRankr::Site to support different levels of specificity
7
+
3
8
  ## Version 3.0.2
4
9
  * Update gem dependencies
5
10
 
data/PageRankr.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.add_runtime_dependency "nokogiri", ">= 1.4.1"
21
21
  s.add_runtime_dependency "json", ">= 1.4.6"
22
- s.add_runtime_dependency "public_suffix_service", ">= 0.9.0"
22
+ s.add_runtime_dependency "public_suffix", ">= 0.9.0"
23
23
  s.add_runtime_dependency "typhoeus", ">= 0.2.1"
24
24
  s.add_runtime_dependency "jsonpath", ">= 0.4.2"
25
25
 
data/README.md CHANGED
@@ -62,19 +62,19 @@ If you don't specify a search engine, then all of them are used.
62
62
  ``` ruby
63
63
  # this
64
64
  PageRankr.indexes('www.google.com')
65
- #=> {:bing=>2120000, :google=>4860000}
65
+ #=> {:bing=>2120000, :google=>4860000, :yahoo => 4863000}
66
66
 
67
67
  # is equivalent to
68
- PageRankr.indexes('www.google.com', :google, :bing)
69
- #=> {:bing=>2120000, :google=>4860000}
68
+ PageRankr.indexes('www.google.com', :google, :bing, :yahoo)
69
+ #=> {:bing=>2120000, :google=>4860000, :yahoo => 4863000}
70
70
  ```
71
71
 
72
72
  You can also use the alias `index` instead of `indexes`.
73
73
 
74
- Valid search engines are: `:google, :bing`. To get this list you can do:
74
+ Valid search engines are: `:google, :bing, :yahoo`. To get this list you can do:
75
75
 
76
76
  ``` ruby
77
- PageRankr.index_trackers #=> [:bing, :google]
77
+ PageRankr.index_trackers #=> [:bing, :google, :yahoo]
78
78
  ```
79
79
 
80
80
  ### Ranks
@@ -165,7 +165,7 @@ If you ever come across a site that provides a rank or backlinks you can hook th
165
165
 
166
166
  # This method specifies the parameters for the url. It is optional, but likely required for the class to be useful.
167
167
  def params
168
- {:q => @site.to_s}
168
+ {:q => tracked_url}
169
169
  end
170
170
 
171
171
  # You can use a method named either xpath, jsonpath, or regex with the appropriate query type
data/lib/page_rankr.rb CHANGED
@@ -3,8 +3,9 @@ require File.expand_path("../page_rankr/ranks", __FILE__)
3
3
  require File.expand_path("../page_rankr/indexes", __FILE__)
4
4
 
5
5
  module PageRankr
6
- class MethodRequired < StandardError; end
7
- class DomainInvalid < StandardError; end
6
+ class MethodRequired < StandardError; end
7
+ class DomainInvalid < StandardError; end
8
+ class SupportedComponentsInvalid < StandardError; end
8
9
 
9
10
  class << self
10
11
  def backlinks(site, *search_engines)
@@ -5,5 +5,11 @@ module PageRankr
5
5
  include Tracker
6
6
 
7
7
  alias_method :backlink, :tracked
8
+
9
+ def clean(raw)
10
+ cleaned_content = super(raw)
11
+ return nil if cleaned_content.nil? || cleaned_content.zero?
12
+ cleaned_content
13
+ end
8
14
  end
9
15
  end
@@ -10,7 +10,7 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:cli => 10, :dat => "snbamz", :url => @site.to_s}
13
+ {:cli => 10, :dat => "snbamz", :url => tracked_url}
14
14
  end
15
15
 
16
16
  def xpath
@@ -10,7 +10,7 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:q => "link:#{@site.to_s}"}
13
+ {:q => "inbody:#{tracked_url}"}
14
14
  end
15
15
 
16
16
  def xpath
@@ -10,11 +10,11 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:q => "link:#{@site.to_s}"}
13
+ {:q => "link:#{tracked_url}"}
14
14
  end
15
15
 
16
16
  def xpath
17
- "//div[@id='resultStats']/text()"
17
+ "//div[@id='subform_ctrl']/div[2]/b[3]/text()"
18
18
  end
19
19
  end
20
20
  end
@@ -6,14 +6,15 @@ module PageRankr
6
6
  include Backlink
7
7
 
8
8
  def url
9
- "http://siteexplorer.search.yahoo.com/search"
9
+ "http://search.yahoo.com/search"
10
10
  end
11
+
11
12
  def params
12
- {:p => "#{@site.to_s}"}
13
+ {:p => "inbody:#{tracked_url}"}
13
14
  end
14
15
 
15
16
  def xpath
16
- "//ul[@id='result-details']/li[2]/a/text()"
17
+ "//span[@id='resultCount']/text()"
17
18
  end
18
19
  end
19
20
  end
@@ -5,5 +5,11 @@ module PageRankr
5
5
  include Tracker
6
6
 
7
7
  alias_method :index, :tracked
8
+
9
+ def clean(raw)
10
+ cleaned_content = super(raw)
11
+ return nil if cleaned_content.nil? || cleaned_content.zero?
12
+ cleaned_content
13
+ end
8
14
  end
9
15
  end
@@ -1,6 +1,7 @@
1
1
  require File.expand_path("../trackers", __FILE__)
2
2
  require File.expand_path("../indexes/bing", __FILE__)
3
3
  require File.expand_path("../indexes/google", __FILE__)
4
+ require File.expand_path("../indexes/yahoo", __FILE__)
4
5
 
5
6
  module PageRankr
6
7
  class Indexes
@@ -10,7 +10,7 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:q => "site:#{@site.to_s}"}
13
+ {:q => "site:#{tracked_url}"}
14
14
  end
15
15
 
16
16
  def xpath
@@ -10,11 +10,11 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:q => "site:#{@site.to_s}"}
13
+ {:q => "site:#{tracked_url}"}
14
14
  end
15
15
 
16
16
  def xpath
17
- "//div[@id='resultStats']/text()"
17
+ "//div[@id='subform_ctrl']/div[2]/b[3]/text()"
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,21 @@
1
+ require File.expand_path('../../index', __FILE__)
2
+
3
+ module PageRankr
4
+ class Indexes
5
+ class Yahoo
6
+ include Index
7
+
8
+ def url
9
+ "http://search.yahoo.com/search"
10
+ end
11
+
12
+ def params
13
+ {:p => "site:#{tracked_url}"}
14
+ end
15
+
16
+ def xpath
17
+ "//span[@id='resultCount']/text()"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -10,7 +10,7 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:cli => 10, :dat => "snbamz", :url => @site.to_s}
13
+ {:cli => 10, :dat => "snbamz", :url => tracked_url}
14
14
  end
15
15
 
16
16
  # Alexa may sometimes return a result for the incorrect site and thus it is necessary to check if
@@ -20,7 +20,11 @@ module PageRankr
20
20
  # to slocourts.net. Clearly something is wrong with how Alexa handles this case and so in the event this
21
21
  # happens we treat the results as if there were no results.
22
22
  def xpath
23
- "//popularity[contains(@url, '#{@site.domain}')]/@text"
23
+ "//popularity[contains(@url, '#{tracked_url}')]/@text"
24
+ end
25
+
26
+ def supported_components
27
+ [:domain]
24
28
  end
25
29
  end
26
30
  end
@@ -10,7 +10,7 @@ module PageRankr
10
10
  end
11
11
 
12
12
  def params
13
- {:cli => 10, :dat => "snbamz", :url => @site.to_s}
13
+ {:cli => 10, :dat => "snbamz", :url => tracked_url}
14
14
  end
15
15
 
16
16
  # Alexa may sometimes return a result for the incorrect site and thus it is necessary to check if
@@ -20,7 +20,11 @@ module PageRankr
20
20
  # to slocourts.net. Clearly something is wrong with how Alexa handles this case and so in the event this
21
21
  # happens we treat the results as if there were no results.
22
22
  def xpath
23
- "//popularity[contains(@url, '#{@site.domain}')]/../reach/@rank"
23
+ "//popularity[contains(@url, '#{tracked_url}')]/../reach/@rank"
24
+ end
25
+
26
+ def supported_components
27
+ [:domain]
24
28
  end
25
29
  end
26
30
  end
@@ -7,17 +7,22 @@ module PageRankr
7
7
  include Rank
8
8
 
9
9
  def initialize(site)
10
- @checksum = Checksum.generate('info:' + site.to_s)
10
+ @site = PageRankr::Site(site)
11
+ @checksum = Checksum.generate("info:#{tracked_url}")
11
12
 
12
13
  super(site)
13
14
  end
14
15
 
16
+ def supported_components
17
+ [:subdomain, :path]
18
+ end
19
+
15
20
  def url
16
21
  "http://toolbarqueries.google.com/tbr"
17
22
  end
18
23
 
19
24
  def params
20
- {:client => "navclient-auto", :ch => @checksum, :features => "Rank", :q => "info:#{@site.to_s}"}
25
+ {:client => "navclient-auto", :ch => @checksum, :features => "Rank", :q => "info:#{tracked_url}"}
21
26
  end
22
27
 
23
28
  def regex
@@ -1,28 +1,79 @@
1
- require 'public_suffix_service'
1
+ require 'public_suffix'
2
2
  require 'delegate'
3
+ require 'uri'
3
4
 
4
5
  module PageRankr
5
- class Site < DelegateClass(PublicSuffixService::Domain)
6
+ class Site
7
+ COMPONENTS = [:scheme, :subdomain, :domain, :port, :path, :query, :fragment]
8
+
6
9
  def initialize(site)
7
- super(PublicSuffixService.parse(clean(site)))
8
- valid? or raise DomainInvalid, "The domain provided is invalid."
9
- rescue PublicSuffixService::DomainInvalid => e
10
+ @uri = URI.parse(site)
11
+ @domain = PublicSuffix.parse(@uri.host)
12
+
13
+ @domain.valid? or raise DomainInvalid, "The domain provided is invalid.1"
14
+ rescue PublicSuffix::DomainInvalid, URI::InvalidURIError
10
15
  raise DomainInvalid, "The domain provided is invalid."
11
16
  end
12
-
13
- private
14
-
15
- def clean(site)
16
- site = site || ''
17
- site = site.split("://").last || '' # remove protocol
18
- site = site.split("/").first || '' # remove path
19
- site.split("?").first || '' # remove params
17
+
18
+ def scheme
19
+ @uri.scheme
20
+ end
21
+
22
+ def domain
23
+ @domain.domain
24
+ end
25
+
26
+ def subdomain
27
+ @domain.subdomain or domain
28
+ end
29
+
30
+ def port
31
+ @uri.port
32
+ end
33
+
34
+ def path
35
+ @uri.path
36
+ end
37
+
38
+ def query
39
+ @uri.query
40
+ end
41
+
42
+ def fragment
43
+ @uri.fragment
44
+ end
45
+
46
+ def url(supported_components = [:domain])
47
+ supported_components = COMPONENTS & supported_components #get ordered list
48
+
49
+ unless supported_components.include?(:subdomain) ^ supported_components.include?(:domain)
50
+ raise SupportedComponentsInvalid, "Either subdomain or domain should be set as a supported component, not both."
51
+ end
52
+
53
+ supported_components.inject("") do |url, component|
54
+ url + case component
55
+ when :scheme
56
+ scheme and "#{scheme}://" or ""
57
+ when :domain
58
+ domain
59
+ when :subdomain
60
+ subdomain
61
+ when :port
62
+ port == @uri.default_port and "" or ":#{port}"
63
+ when :path
64
+ path or ""
65
+ when :query
66
+ query and "?#{query}" or ""
67
+ when :fragment
68
+ fragment and "##{fragment}" or ""
69
+ end
70
+ end
20
71
  end
21
72
  end
22
73
 
23
74
  class << self
24
75
  def Site(site)
25
- site.respond_to?(:domain) ? site : Site.new(site)
76
+ site.respond_to?(:url) ? site : Site.new(site)
26
77
  end
27
78
  end
28
79
  end
@@ -32,6 +32,14 @@ module PageRankr
32
32
  raise PageRankr::MethodRequired, "A url method defining the url to the service with the value you wish to extract must be defined."
33
33
  end
34
34
 
35
+ def tracked_url
36
+ @site.url(supported_components)
37
+ end
38
+
39
+ def supported_components
40
+ [:subdomain]
41
+ end
42
+
35
43
  def method
36
44
  :get
37
45
  end
@@ -1,3 +1,3 @@
1
1
  module PageRankr
2
- VERSION = "3.0.2"
2
+ VERSION = "3.1.0"
3
3
  end
data/out.html ADDED
@@ -0,0 +1,405 @@
1
+ <!doctype html><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>link:www.google.com - Google Search</title><style>#gbar,#guser{font-size:13px;padding-top:1px !important}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}</style><style>
2
+ body,td,div,.p,a{
3
+ font-family:arial,sans-serif
4
+ }
5
+ body {
6
+ margin:0
7
+ }
8
+ #gbar{
9
+ float:left;
10
+ height:22px;padding-left:2px;
11
+ font-size:13px
12
+ }
13
+
14
+ .gssb_c table{
15
+ font-size:1em
16
+ }
17
+ .gsfi,.gsfs{
18
+ font-size:17px
19
+ }
20
+
21
+ .j{
22
+ width:34em
23
+ }
24
+
25
+ a:link,.w,.q:active,.q:visited,.tbotu{
26
+ color:#11c
27
+ }
28
+ a.fl,.flc a{
29
+ color:#4272db;text-decoration:none
30
+ }
31
+
32
+ a.gl{
33
+ text-decoration:none
34
+ }
35
+ cite, cite a:link{
36
+ color:#0E774A;
37
+ font-style:normal
38
+ }
39
+ #foot {
40
+ padding:0 8px;
41
+ }
42
+ #foot a{
43
+ white-space:nowrap
44
+ }
45
+ h3{
46
+ font-size:16px;
47
+ font-weight:normal;
48
+ margin:0;
49
+ padding:0
50
+ }
51
+ #res h3{
52
+ display:inline
53
+ }
54
+ .hd{
55
+ height:1px;
56
+ position:absolute;
57
+ top:-1000em
58
+ }
59
+ li.g,body,html,table,.std{
60
+ font-size:13px
61
+ }
62
+ li.g{
63
+ margin-bottom:14px;
64
+ margin-top:0;
65
+ zoom:1;
66
+ }
67
+ ol li,ul li{
68
+ list-style:none
69
+ }
70
+ h1,ol,ul,li{
71
+ margin:0;padding:0
72
+ }
73
+ #mbEnd li{
74
+ margin:1em 0
75
+ }
76
+ #mbEnd h2{
77
+ color:#676767;
78
+ font-family:arial,sans-serif;
79
+ font-size:11px;
80
+ font-weight:normal
81
+ }
82
+ #center_col{
83
+ border-left:1px solid #d3e1f9;
84
+ padding:0 8px
85
+ }
86
+
87
+ #fll a,#bfl a{
88
+ margin:0 10px
89
+ }
90
+
91
+ .f{
92
+ color:#767676
93
+ }
94
+ .grn{
95
+ color:#393
96
+ }
97
+ .ds{
98
+ border-right:1px solid #e7e7e7;
99
+ position:relative;
100
+ height:32px;
101
+
102
+ z-index:100
103
+ }
104
+ .e{
105
+ margin:2px 0px 0.75em
106
+ }
107
+ #leftnav a,.slk a{
108
+ text-decoration:none
109
+ }
110
+ #leftnav h2{
111
+ color: #767676;
112
+ font-weight: normal;
113
+ margin:0
114
+ }
115
+ #logo{
116
+ display:block;
117
+ height:49px;
118
+ margin-top:12px;
119
+ margin-left:12px;
120
+ overflow:hidden;
121
+ position:relative;
122
+ width:137px
123
+ }
124
+ #logo img{
125
+
126
+ left:0;
127
+ position:absolute;
128
+ top:-41px
129
+ }
130
+ .lnsec{
131
+ font-size:13px;
132
+ border-top:1px solid #c9d7f1;
133
+ margin-top:5px;
134
+ padding-top:8px
135
+ }
136
+ .lsb,.micon,.csb,.star,.star div{
137
+ background:url(/images/nav_logo_hp2.png) no-repeat;
138
+ overflow:hidden
139
+ }
140
+ .lst{
141
+ background:#fff;
142
+ border:1px solid #ccc;
143
+ border-bottom:none;
144
+ color:#000;
145
+ font:18px arial,sans-serif;
146
+
147
+ float:left;
148
+ height:26px;
149
+ margin:0;
150
+ padding:4px 0 0;
151
+ padding-left:6px;
152
+ padding-right:10px;
153
+ vertical-align:top;
154
+ width:100%;
155
+
156
+ word-break:break-all
157
+ }
158
+ .lst:focus{
159
+ outline:none
160
+ }
161
+ .lst-td{
162
+ border-bottom:1px solid #999;
163
+ padding:0
164
+ }
165
+ .lst-b{
166
+ border:1px solid #CCC;
167
+ border-bottom:none;
168
+ padding-right:0;
169
+ height:29px;
170
+ padding-top:1px
171
+ }
172
+ .tia input{
173
+ border-right:none;
174
+ padding-right:0
175
+ }
176
+ .tia{
177
+ padding-right:0
178
+ }
179
+ .lsbb{
180
+ background:#eee;
181
+ border:1px solid #999;
182
+ border-top-color:#ccc;
183
+ border-left-color:#ccc;
184
+ height:30px
185
+ }
186
+ .lsb{
187
+ background-position:bottom;
188
+ border:none;
189
+ color:#000;
190
+ cursor:pointer;
191
+ font:15px arial,sans-serif;
192
+ height:30px;
193
+ margin:0;
194
+ vertical-align:top
195
+ }
196
+ .lsb:active{
197
+ background:#ccc
198
+ }
199
+ .micon {
200
+ float:left;
201
+ height:19px;
202
+ margin-top:2px;
203
+ margin-right: 6px;
204
+ width:19px;
205
+ }
206
+ #nav{
207
+
208
+ border-collapse:collapse;
209
+ margin-top:17px;
210
+ text-align:left
211
+ }
212
+ #nav td{
213
+ text-align:center;
214
+ }
215
+ .nobr{
216
+ white-space:nowrap
217
+ }
218
+ #showmodes .micon{
219
+ background-position:-150px -114px;
220
+ height:17px;
221
+ margin-left:9px;
222
+ width:17px;
223
+ }
224
+ #subform_ctrl{
225
+ font-size:11px;
226
+ height:26px;
227
+ margin:5px 3px 0;
228
+ margin-left:17px
229
+ }
230
+ .ts{
231
+ border-collapse:collapse
232
+ }
233
+ #mn{
234
+ table-layout:fixed;width:996px
235
+ }
236
+ .mitem{
237
+ font-size:15px;
238
+ line-height:24px;
239
+ margin-bottom:2px;
240
+ padding-left:0
241
+ }
242
+ .msel{
243
+ font-weight:bold;
244
+ margin:-1px 0 0 0;
245
+ border:solid #fff;
246
+ border-width:1px 0
247
+ }
248
+ .r{
249
+ margin:0
250
+ }
251
+ #res{
252
+ padding:4px 8px 0
253
+ }
254
+ .s br{
255
+ display:none
256
+ }
257
+ .spon{
258
+ font-size:11px;
259
+ font-weight:normal;
260
+ color:#767676
261
+ }
262
+ .mitem,.lnsec{
263
+ padding-left:8px
264
+ }
265
+ #showmodes{
266
+ font-size:15px;
267
+ line-height:24px;
268
+ }
269
+ #swr{
270
+ margin-top:4px
271
+ }
272
+ #swr li{
273
+ line-height:1.2;
274
+ margin-bottom:4px
275
+ }
276
+ .csb{
277
+ display:block;
278
+ height:40px;
279
+ }
280
+ .images_table td{line-height:17px;padding-bottom:16px}
281
+ .images_table img{border:1px solid #ccc;padding:1px}
282
+ .taf{
283
+ padding:1px 0 0
284
+ }
285
+ .tam{
286
+ padding:14px 0 0
287
+ }
288
+ .tal{
289
+ padding:14px 0 1px
290
+ }
291
+ #tbd,#abd{
292
+ display:block;
293
+ min-height:1px;
294
+ padding-top:3px
295
+ }
296
+ #tbd li{
297
+
298
+ display:inline
299
+ }
300
+ .tbfo,.tbt,.tbpd{
301
+ margin-bottom:8px
302
+ }
303
+ #tbd .tbt li{
304
+ display:block;
305
+ font-size:13px;
306
+ line-height:1.2;
307
+ padding-bottom:3px;
308
+ padding-left:8px;
309
+ text-indent:-8px
310
+ }
311
+ .tbos,.b{
312
+ font-weight:bold;
313
+ }
314
+ a:hover{
315
+ text-decoration:underline
316
+ }
317
+ #leftnav a:hover {
318
+ text-decoration:underline;
319
+ }
320
+ em{
321
+ font-weight:bold;
322
+ font-style:normal
323
+ }
324
+
325
+ .gac_wd{
326
+ right:-2px !important;
327
+
328
+ overflow:hidden
329
+ }
330
+
331
+ .fmg{
332
+ display:inline-block;
333
+ margin-top:7px;
334
+ padding-right:8px;
335
+ text-align-left;
336
+ vertical-align:top;
337
+ width:90px;
338
+ zoom:1
339
+ }
340
+ .star{
341
+
342
+ background-position:0 -120px;
343
+
344
+ height:9px;
345
+ overflow-hidden;
346
+ width:50px
347
+ }
348
+ .star div{
349
+
350
+ background-position:0 -110px
351
+
352
+ }
353
+
354
+ .pslires{
355
+ padding-top:6px;
356
+ overflow:hidden;
357
+ width:99.5%
358
+ }
359
+ .psliimg{
360
+ float:left;
361
+ height:90px;
362
+ text-align:top;
363
+ width:90px
364
+ }
365
+ .pslimain{
366
+ margin-left:100px;
367
+ margin-right:9em
368
+ }
369
+ .psliprice{
370
+ float:right;
371
+ width:7em
372
+ }
373
+ .psliprice b{
374
+ font-size:medium;
375
+ font-weight:bold;
376
+ white-space:nowrap
377
+ }
378
+ .psliimg img{
379
+ border:none
380
+ }
381
+ </style><script type="text/javascript">
382
+ window['hlprwt'] = function(t, ct) {
383
+ try {
384
+ if (t === window) {
385
+ t = window.event.srcElement;
386
+ while (t) {
387
+ if (t.href) {
388
+ break;
389
+ }
390
+ t = t.parentNode;
391
+ }
392
+ }
393
+ t.href = ct;
394
+ t.onmousedown = '';
395
+ } catch (e) {
396
+ }
397
+ return true;
398
+ }
399
+ window.google = { y: {} };
400
+ </script><script type="text/javascript"></script></head>
401
+ <body bgcolor="#ffffff" topmargin="3" marginheight="3" marginwidth="0"
402
+ ><div id=gbar><nobr><b class=gb1>Web</b> <a class=gb1 href="http://www.google.com/search?q=link:www.google.com&um=1&ie=UTF-8&hl=en&tbm=isch&source=og&sa=N&tab=wi">Images</a> <a class=gb1 href="http://www.google.com/search?q=link:www.google.com&um=1&ie=UTF-8&hl=en&tbo=u&tbm=vid&source=og&sa=N&tab=wv">Videos</a> <a class=gb1 href="http://maps.google.com/maps?q=link:www.google.com&um=1&ie=UTF-8&hl=en&sa=N&tab=wl">Maps</a> <a class=gb1 href="http://news.google.com/nwshp?hl=en&tab=wn">News</a> <a class=gb1 href="http://www.google.com/search?q=link:www.google.com&um=1&ie=UTF-8&hl=en&tbo=u&tbm=shop&source=og&sa=N&tab=wf">Shopping</a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=gb1 style="text-decoration:none" href="http://www.google.com/intl/en/options/"><u>More</u> &raquo;</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe></span><a href="http://www.google.com/history/optout?hl=en" class=gb4>Web History</a> | <a href="/preferences?hl=en" class=gb4>Settings</a> | <a id=gb_70 href="https://accounts.google.com/ServiceLogin?hl=en&continue=http://www.google.com/search%3Fq%3Dlink:www.google.com" class=gb4>Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div><br clear="all"><table border="0" cellpadding="0" cellspacing="0" id="mn" style="position:relative"><tr><td rowspan="2" valign="top" width="157"><h1><a href="/webhp?hl=" id="logo" title="Go to Google Home"><img src="/images/nav_logo_hp2.png" alt="" height="222" style="border:0" width="167"></a></h1></td><td valign="top" style="padding-left:9px" width="559"><form name="gs" id="tsf" method="GET" action="/search" style="display:block;margin:0;background:none"><table border="0" cellpadding="0" cellspacing="0" id="sbhost" style="border-bottom:1px solid #e7e7e7;margin-top:18px;position:relative"><tr><td class="lst-td" width="100%" valign="bottom" style=""><div style="position:relative;zoom:1"><input autocomplete="off" class="lst" type="text" name="q" maxlength="2048" title="Search" value="link:www.google.com"></div></td><td><div class="ds"><div class="lsbb"><input type="submit" name="btnG" class="lsb" value="Search"></div></div></td></tr></table></form></td><td style="padding-left:5px" width="259"></td></tr><tr><td width="100%"><div id="subform_ctrl"><div style="float:right"><a class="fl" href="/advanced_search?q=link:www.google.com&amp;hl=en&amp;ie=UTF-8">Advanced Search</a></div><div>Results <b>1</b> - <b>10</b> of about <b>34,900</b> linking to <b>www.google.com</b>.</div></div></td><td></td></tr><tr><td valign="top" id="leftnav" style="padding:4px"><div id="modeselector" style="padding-bottom:4px"><ul><li class="mitem msel"><span class="micon" style="
403
+ background-position:-20px -132px
404
+ "></span>Everything</li></ul><a id="showmodes" class="q" href="/search?q=link%3Awww.google.com&amp;hl=en&amp;prmdo=1&amp;sa=X"><span class="micon"></span><span class="msm">More</span></a></div><div class="lnsec"><h2 class="hd">Search Options</h2><ul id="tbd" class="med"></ul><a href="/search?q=link:www.google.com&amp;hl=en&amp;ie=UTF-8&amp;tbo=1" class="q" style="display:block;margin-bottom:16px">Show options...</a></div></td><td valign="top"><div id="center_col"><div id="tbbc" style="background:#ebeff9;padding:8px;margin-bottom:4px"><b>Web</b></div><div id="res"><div id="ires"><ol><li class="g"><h3 class="r"><a href="http://www.google.nl/" onmousedown="return hlprwt(this, 'http://www.google.nl/')">Google</a></h3><div class="s">Het internet &middot; Afbeeldingen &middot; Video&#39;s &middot; Maps &middot; Nieuws &middot; Shopping &middot; Gmail &middot; Meer &middot; <br> Vertalen &middot; Boeken &middot; Scholar &middot; Blogs &middot; YouTube &middot; Agenda &middot; Foto&#39;s &middot; Documenten <b>...</b><br><div><cite>www.google.nl/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:DUYA4reIvh8J:http://www.google.nl/+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.google.nl/+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.irishtimes.com/newspaper/breaking/2011/0930/breaking20.html" onmousedown="return hlprwt(this, 'http://www.irishtimes.com/newspaper/breaking/2011/0930/breaking20.html')">Google invests �75m in data centre - The Irish Times - Fri, Sep 30 <b>...</b></a></h3><div class="s">Sep 30, 2011 <b>...</b> Google is to invest �75 million in a new energy efficient data centre in west <br> Dublin.<br><div><cite>www.irishtimes.com/newspaper/breaking/2011/.../breaking20.html</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:MZ4M-gkm-ZgJ:http://www.irishtimes.com/newspaper/breaking/2011/0930/breaking20.html+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.irishtimes.com/newspaper/breaking/2011/0930/breaking20.html+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.linuxpackages.net/search_view.php?by=name&amp;name=postfix&amp;ver=" onmousedown="return hlprwt(this, 'http://www.linuxpackages.net/search_view.php?by=name&amp;name=postfix&amp;ver=')">LinuxPackages: Results</a></h3><div class="s">Results 1 - 15 <b>...</b> Slackware resources to help install and configure the Linux slackware <br> distribution, Email list, Discussion Board, Howtos, Contributed packages, <b>...</b><br><div><cite>www.linuxpackages.net/search_view.php?by=name...</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:2_b7ck_ob68J:http://www.linuxpackages.net/search_view.php?by=name&amp;name=postfix&amp;ver=+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.linuxpackages.net/search_view.php?by=name&amp;name=postfix&amp;ver=+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.quefuede.com/centrosciudades_eggc.html" onmousedown="return hlprwt(this, 'http://www.quefuede.com/centrosciudades_eggc.html')">PURCHENA-COLEGIOS-INSTITUTOS-CENTROS-DE-ENSE�ANZA</a></h3><div class="s">DIRECTORIO DE COLEGIOS, INSTITUTOS Y CENTROS DE ENSE�ANZA DE <br> PURCHENA,<br><div><cite>www.quefuede.com/centrosciudades_eggc.html</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:AUU0h5GOs1wJ:http://www.quefuede.com/centrosciudades_eggc.html+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.quefuede.com/centrosciudades_eggc.html+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.google.com.br/intl/pt-BR/earth/explore/showcase/ocean.html" onmousedown="return hlprwt(this, 'http://www.google.com.br/intl/pt-BR/earth/explore/showcase/ocean.html')">Google Earth: Oceano</a></h3><div class="s">Google Earth lets you fly anywhere on Earth to view satellite imagery, maps, <br> terrain, 3D buildings, from galaxies in outer space to the canyons of the ocean.<br><div><cite>www.google.com.br/intl/pt-BR/earth/explore/.../ocean.html</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:IwfVlgfEH2wJ:http://www.google.com.br/intl/pt-BR/earth/explore/showcase/ocean.html+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.google.com.br/intl/pt-BR/earth/explore/showcase/ocean.html+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.heroines.ca/search/search.html" onmousedown="return hlprwt(this, 'http://www.heroines.ca/search/search.html')">Search - heroines.ca, Women in Canadian History</a></h3><div class="s">Comprehensive site about women in Canadian history.<br><div><cite>www.heroines.ca/search/search.html</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:jcUvQGWsRBkJ:http://www.heroines.ca/search/search.html+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.heroines.ca/search/search.html+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.thuraya.com/support/selfservice" onmousedown="return hlprwt(this, 'http://www.thuraya.com/support/selfservice')">Self Service | Thuraya</a></h3><div class="s">Thuraya offers reliable satellite-based telecommunications solutions to travellers, <br> governments and corporate users in industries including the media, maritime <b>...</b><br><div><cite>www.thuraya.com/support/selfservice</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:y8N1LqUoKRkJ:http://www.thuraya.com/support/selfservice+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.thuraya.com/support/selfservice+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://rconversation.blogs.com/rconversation/google-1/" onmousedown="return hlprwt(this, 'http://rconversation.blogs.com/rconversation/google-1/')">RConversation: Google</a></h3><div class="s">Rebecca MacKinnon&#39;s erratic postings about work, reading, and ideas since <br> 2004.<br><div><cite>rconversation.blogs.com/rconversation/google-1/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:_31fpR3zrRMJ:http://rconversation.blogs.com/rconversation/google-1/+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://rconversation.blogs.com/rconversation/google-1/+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.google.com/intl/ru/earth/learn/3dbuildings.html" onmousedown="return hlprwt(this, 'http://www.google.com/intl/ru/earth/learn/3dbuildings.html')">Google &#1055;&#1083;&#1072;&#1085;&#1077;&#1090;&#1072; &#1047;&#1077;&#1084;&#1083;&#1103;: &#1088;&#1091;&#1082;&#1086;&#1074;&#1086;&#1076;&#1089;&#1090;&#1074;&#1072; &#1087;&#1086; 3D-&#1084;&#1086;&#1076;&#1077;&#1083;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1102;</a></h3><div class="s">Google Earth lets you fly anywhere on Earth to view satellite imagery, maps, <br> terrain, 3D buildings, from galaxies in outer space to the canyons of the ocean.<br><div><cite>www.google.com/intl/ru/earth/learn/3dbuildings.html</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:F7t0JFuAnkwJ:http://www.google.com/intl/ru/earth/learn/3dbuildings.html+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://www.google.com/intl/ru/earth/learn/3dbuildings.html+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://bulletins.psu.edu/bulletins/bluebook/ba_requirements.cfm?section=foreignLanguage" onmousedown="return hlprwt(this, 'http://bulletins.psu.edu/bulletins/bluebook/ba_requirements.cfm?section=foreignLanguage')">Undergraduate Degree Programs: Bachelor of Arts Degree <b>...</b></a></h3><div class="s">Bachelor of Arts degree majors require 12 to 24 credits distributed among five <br> categories. In addition, students are expected to complete credits required by <br> their <b>...</b><br><div><cite>bulletins.psu.edu/bulletins/bluebook/ba_requirements.cfm?...</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&amp;q=cache:QUB9FL7oNusJ:http://bulletins.psu.edu/bulletins/bluebook/ba_requirements.cfm?section=foreignLanguage+link%3Awww.google.com&amp;ct=clnk">Cached</a> - <a href="/search?hl=en&amp;tbo=1&amp;q=related:http://bulletins.psu.edu/bulletins/bluebook/ba_requirements.cfm?section=foreignLanguage+link%3Awww.google.com&amp;sa=X">Similar</a></span></div></div></li></ol></div></div></div><div id="foot"><table align="center" border="0" cellpadding="0" cellspacing="0" id="nav"><tr valign="top"><td class="b" align="left"><span class="csb ch" style="background-position:-26px 0;width:18px"></span><b></b></td><td><span class="csb ch" style="background-position:-44px 0;width:16px"></span><b>1</b></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=10&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>2</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=20&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>3</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=30&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>4</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=40&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>5</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=50&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>6</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=60&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>7</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=70&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>8</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=80&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>9</a></td><td><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=90&amp;sa=N" class="fl"><span class="csb ch" style="background-position:-60px 0;width:16px"></span>10</a></td><td class="b" style="text-align:left"><a href="/search?hl=en&amp;ie=UTF-8&amp;ei=3GnlTvHQJObv0gGTpez9BQ&amp;q=link:www.google.com&amp;start=10&amp;sa=N" style="text-align:left"><span class="csb ch" style="background-position:-76px 0;width:66px"></span><span style="display:block;margin-left:53px">Next</span></a></td></tr></table><div><div style="margin-top:22px"><form method="GET" action="/search"><table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-bottom:1px solid #e7e7e7;padding:8px 0 0;position:relative"><tr><td class="lst-td" width="100%" valign="bottom"><div style="position:relative;zoom:1"><input autocomplete="off" class="lst" type="text" name="q" maxlength="2048" value="link:www.google.com" title="Search"></div></td><td><div class="ds"><div class="lsbb"><input type="submit" name="btnG" class="lsb" value="Search"></div></div></td></tr></table><input type="hidden" name="hl" value="en"></form></div><p id="bfl" class="flc" style="margin:6px 0 0;text-align:center"><a href="/support/websearch/bin/answer.py?answer=134479&amp;hl=en">Search Help</a></p></div><div id="fll" class="flc" style="margin:19px auto 19px auto;text-align:center"><a href="/">Google&#160;Home</a> <a href="
405
+ /intl/en/ads/">Advertising&#160;Programs</a> <a href="/services">Business Solutions</a> <a href="/intl/en/privacy.html">Privacy</a> <a href="/intl/en/about.html">About Google</a></div></div></td><td valign="top"></td></tr></table><script src="/extern_js/f/CgJlbhICdXMgACswWjgALCswDjgALCswCjgAmgICaGUsKzAYOAAsgAIEkAJc/bqYe1apFwH0.js"></script><script type="text/javascript">google.ac.c({"client":"serp","dh":true,"ds":"","host":"google.com","jsonp":true,"msgs":{"lcky":"I\u0026#39;m Feeling Lucky","lml":"Learn more","psrc":"This search was removed from your \u003Ca href=\"/history\"\u003EWeb History\u003C/a\u003E","psrl":"Remove","srch":"Google Search"},"ovr":{"d":1,"hl":1,"l":1,"o":1,"p":1,"ps":1,"sw":1,"vc":-3},"pq":"link:www.google.com"})</script></body></html>