PageRankr 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>