seo_info 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.rspec +1 -0
- data/CHANGELOG.MD +4 -0
- data/Gemfile +4 -0
- data/README.md +29 -0
- data/Rakefile +13 -0
- data/lib/seo_info/google.rb +23 -0
- data/lib/seo_info/version.rb +3 -0
- data/lib/seo_info.rb +7 -0
- data/seo_info.gemspec +23 -0
- data/spec/data/google_search.html +407 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/specs/google_spec.rb +15 -0
- metadata +86 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format doc
|
data/CHANGELOG.MD
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
Description
|
2
|
+
===========
|
3
|
+
|
4
|
+
seo_info gem gets different seo information for web-sites.
|
5
|
+
|
6
|
+
Features
|
7
|
+
========
|
8
|
+
|
9
|
+
Things that you are able to do right now with this gem:
|
10
|
+
|
11
|
+
* Number of pages indexed by Google
|
12
|
+
|
13
|
+
Install
|
14
|
+
=======
|
15
|
+
|
16
|
+
`gem install seo_info`
|
17
|
+
|
18
|
+
OR
|
19
|
+
|
20
|
+
Put this line in your Gemfile:
|
21
|
+
`gem 'seo_info'`
|
22
|
+
|
23
|
+
Then bundle:
|
24
|
+
`$ bundle`
|
25
|
+
|
26
|
+
Contributing
|
27
|
+
============
|
28
|
+
|
29
|
+
If you consider to contribute to seo_info gem, please try to cover your code with tests
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "open-uri"
|
3
|
+
|
4
|
+
namespace :test do
|
5
|
+
desc "Getting fresh page source data for specs"
|
6
|
+
task :prepare do
|
7
|
+
puts "Getting google search page..."
|
8
|
+
page = open("https://www.google.com/search?hl=en&safe=off&q=site%3Aruby-lang.org&btnG=Search").read
|
9
|
+
path = 'spec/data/google_search.html'
|
10
|
+
File.open(path, 'w') {|f| f.write page}
|
11
|
+
puts "Successfully saved google search result page into #{path}"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module SeoInfo
|
2
|
+
class Google
|
3
|
+
attr_accessor :site_url
|
4
|
+
attr_reader :results
|
5
|
+
|
6
|
+
def initialize(site_url)
|
7
|
+
@site_url = site_url
|
8
|
+
@results = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def indexed_pages
|
12
|
+
results[:indexed_pages] ||= begin
|
13
|
+
page = Nokogiri::HTML(get_page)
|
14
|
+
page.xpath('//div[@id="subform_ctrl"]/div/b/text()')[2].text.gsub(/[^\d]/,'').to_i
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def get_page
|
20
|
+
open("https://www.google.com/search?hl=en&safe=off&q=site%3A#{site_url}&btnG=Search").read
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/seo_info.rb
ADDED
data/seo_info.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "seo_info/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "seo_info"
|
7
|
+
s.version = SeoInfo::VERSION
|
8
|
+
s.authors = ["Sergey Parizhskiy", "Dina Zhyliaieva"]
|
9
|
+
s.email = ["parizhskiy@gmail.com", "dinaionenko@reevoo.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{SEO information for web-sites}
|
12
|
+
s.description = %q{Gets different seo information such as Page Rank, Alexa Rank, number of indexed pages in different search engines and so on.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "seo_info"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "rspec"
|
22
|
+
s.add_runtime_dependency "nokogiri"
|
23
|
+
end
|
@@ -0,0 +1,407 @@
|
|
1
|
+
<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>site:ruby-lang.org - 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="https://www.google.com/search?hl=en&safe=off&q=site:ruby-lang.org&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi">Images</a> <a class=gb1 href="https://www.google.com/search?hl=en&safe=off&q=site:ruby-lang.org&um=1&ie=UTF-8&tbo=u&tbm=vid&source=og&sa=N&tab=wv">Videos</a> <a class=gb1 href="http://maps.google.com/maps?hl=en&safe=off&q=site:ruby-lang.org&um=1&ie=UTF-8&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="https://www.google.com/search?hl=en&safe=off&q=site:ruby-lang.org&um=1&ie=UTF-8&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> »</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=https://www.google.com/search%3Fhl%3Den%26safe%3Doff%26q%3Dsite:ruby-lang.org%26btnG%3DSearch" 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=en" 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="site:ruby-lang.org"></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"><input type="hidden" name="safe" value="off"></form></td><td style="padding-left:5px" width="259"><a href="/preferences?q=site:ruby-lang.org&hl=en&safe=off&ie=UTF-8&sa=F" class="fl" style="
|
403
|
+
font-size:11px;margin-left:8px
|
404
|
+
">SafeSearch is off</a></td></tr><tr><td width="100%"><div id="subform_ctrl"><div style="float:right"><a class="fl" href="/advanced_search?q=site:ruby-lang.org&hl=en&safe=off&ie=UTF-8">Advanced Search</a></div><div>Results <b>1</b> - <b>10</b> of about <b>155,000</b> from <b>ruby-lang.org</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="
|
405
|
+
background-position:-20px -132px
|
406
|
+
"></span>Everything</li></ul><a id="showmodes" class="q" href="/search?hl=en&safe=off&q=site%3Aruby-lang.org&prmdo=1&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=site:ruby-lang.org&hl=en&safe=off&sa=G&ie=UTF-8&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://ruby-lang.org/" onmousedown="return hlprwt(this, 'http://ruby-lang.org/')">Ruby Programming Language</a></h3><div class="s">31 Oct 2011 <b>...</b> A dynamic, interpreted, open source programming language with a focus on <br> simplicity and productivity. Site includes news, downloads, <b>...</b><br><div><cite>ruby-lang.org/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:yxzR5ojuzQ8J:http://ruby-lang.org/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://ruby-lang.org/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/fr/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/fr/')">Le langage Ruby</a></h3><div class="s">31 oct. 2011 <b>...</b> Sortie de Ruby 1.9.3-p0. Ruby 1.9.3-p0 est sorti. C'est la version stable la plus <br> r�cente de la s�rie 1.9. Voyez les fichiers ChangeLog et NEWS <b>...</b><br><div><cite>www.ruby-lang.org/fr/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:NltJcsh7PQQJ:http://www.ruby-lang.org/fr/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/fr/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/pl/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/pl/')">Język programowania Ruby</a></h3><div class="s">17 Sie 2011 <b>...</b> RuPy 2011 już za dwa miesiące! RuPy 2011, to czwarta edycja wyjątkowej, <br> międzynarodowej konferencji, poświęconej gł�wnie dynamicznych <b>...</b><br><div><cite>www.ruby-lang.org/pl/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:l2ImNGN7bskJ:http://www.ruby-lang.org/pl/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/pl/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/ja/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/ja/')">オブジェクト指向スクリプト言語 Ruby</a></h3><div class="s">2011年12月3日 <b>...</b> 公式サイト。ニュース、メーリングリストの紹介、ダウンロード。<br><div><cite>www.ruby-lang.org/ja/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:j7GvXdh02YYJ:http://www.ruby-lang.org/ja/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/ja/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/zh_TW/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/zh_TW/')">Ruby Programming Language 中文官方網頁</a></h3><div class="s">RubyConf Taiwan 2011 Call For Sponsors · RubyConf Taiwan 將於2011/8/26 (週<br> 五) 和8/27 (週六) 在中央研究院人科所會議廳舉辦,是台灣唯一及最大的Ruby <b>...</b><br><div><cite>www.ruby-lang.org/zh_TW/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:H0I1vQgMg2cJ:http://www.ruby-lang.org/zh_TW/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/zh_TW/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/it" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/it')">Il linguaggio di programmazione Ruby</a></h3><div class="s">5 ago 2011 <b>...</b> Rilasciato Ruby 1.9.3 preview1. Ruby 1.9.3 preview1 � stato rilasciato. Questa � <br> una prima preview della prossima versione, e contiene ancora <b>...</b><br><div><cite>www.ruby-lang.org/it</cite><span class="flc"> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/it+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/zh_cn" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/zh_cn')">Ruby 程序设计语言官方网站</a></h3><div class="s">Ruby 是... 一种跨平台、面向对象的动态类型编程语言。Ruby 体现了表达的一致性和<br> 简单性,它不仅是一门编程语言,更是表达想法的一种简练方式。 更多. <b>...</b><br><div><cite>www.ruby-lang.org/zh_cn</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:5TcPjRsnRYMJ:http://www.ruby-lang.org/zh_cn+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/zh_cn+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/id/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/id/')">Bahasa Pemrograman Ruby</a></h3><div class="s">Ruby 1.9.1 rilis! Ruby 1.9.1 rilis. Ini adalah rilis stabil pertama dari Ruby Seri 1.9. <br> Ruby 1.9 modern, lebih cepat, dengan sintaks jelas, multilingualized, yang <b>...</b><br><div><cite>www.ruby-lang.org/id/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:hHWN50mDHXcJ:http://www.ruby-lang.org/id/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/id/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/es/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/es/')">Lenguaje de Programaci�n Ruby</a></h3><div class="s">4 Nov 2011 <b>...</b> Ruby es� Un lenguaje de programaci�n din�mico y de c�digo abierto enfocado <br> en la simplicidad y productividad. Su elegante sintaxis se <b>...</b><br><div><cite>www.ruby-lang.org/es/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:UEjMjl6oGTgJ:http://www.ruby-lang.org/es/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/es/+site%3Aruby-lang.org&sa=X">Similar</a></span></div></div></li><li class="g"><h3 class="r"><a href="http://www.ruby-lang.org/pt/" onmousedown="return hlprwt(this, 'http://www.ruby-lang.org/pt/')">Linguagem de Programa��o Ruby</a></h3><div class="s">2 ago. 2011 <b>...</b> Lan�ado o Ruby 1.9.3 preview1. O Ruby 1.9.3 preview1 foi lan�ado. Esta � a <br> primeira pre-release da pr�xima vers�o e ainda existem alguns <b>...</b><br><div><cite>www.ruby-lang.org/pt/</cite><span class="flc"> - <a href="//webcache.googleusercontent.com/search?hl=en&safe=off&q=cache:S0y6Ga9SmyEJ:http://www.ruby-lang.org/pt/+site%3Aruby-lang.org&ct=clnk">Cached</a> - <a href="/search?hl=en&safe=off&tbo=1&q=related:http://www.ruby-lang.org/pt/+site%3Aruby-lang.org&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=10&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=20&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=30&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=40&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=50&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=60&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=70&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=80&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=90&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&safe=off&ie=UTF-8&ei=RE7zTr7dPJqPsAaV6tUW&q=site:ruby-lang.org&start=10&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="site:ruby-lang.org" 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"><input type="hidden" name="safe" value="off"></form></div><p id="bfl" class="flc" style="margin:6px 0 0;text-align:center"><a href="/support/websearch/bin/answer.py?answer=134479&hl=en">Search Help</a></p></div><div id="fll" class="flc" style="margin:19px auto 19px auto;text-align:center"><a href="/">Google Home</a> <a href="
|
407
|
+
/intl/en/ads/">Advertising 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/CgJlbiAAKzBaOAAsKzAOOAAsKzAKOACaAgJoZSwrMBg4ACyAAgSQAl0/V-eO8SDgTAw.js"></script><script type="text/javascript">google.ac.c({"client":"serp","dh":true,"ds":"","fl":true,"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":"site:ruby-lang.org","scd":10,"sce":5})</script></body></html>
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper.rb'
|
2
|
+
|
3
|
+
describe SeoInfo::Google do
|
4
|
+
let(:google) do
|
5
|
+
path = 'spec/data/google_search.html'
|
6
|
+
google = SeoInfo::Google.new('example.com')
|
7
|
+
google.stub(:get_page).and_return(File.read(path))
|
8
|
+
google
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns number greater than zero" do
|
12
|
+
google.indexed_pages.should > 0
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: seo_info
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sergey Parizhskiy
|
9
|
+
- Dina Zhyliaieva
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2011-12-22 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
requirement: &2153233340 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2153233340
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: nokogiri
|
28
|
+
requirement: &2153232920 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2153232920
|
37
|
+
description: Gets different seo information such as Page Rank, Alexa Rank, number
|
38
|
+
of indexed pages in different search engines and so on.
|
39
|
+
email:
|
40
|
+
- parizhskiy@gmail.com
|
41
|
+
- dinaionenko@reevoo.com
|
42
|
+
executables: []
|
43
|
+
extensions: []
|
44
|
+
extra_rdoc_files: []
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- .rspec
|
48
|
+
- CHANGELOG.MD
|
49
|
+
- Gemfile
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- lib/seo_info.rb
|
53
|
+
- lib/seo_info/google.rb
|
54
|
+
- lib/seo_info/version.rb
|
55
|
+
- seo_info.gemspec
|
56
|
+
- spec/data/google_search.html
|
57
|
+
- spec/spec_helper.rb
|
58
|
+
- spec/specs/google_spec.rb
|
59
|
+
homepage: ''
|
60
|
+
licenses: []
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project: seo_info
|
79
|
+
rubygems_version: 1.8.10
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: SEO information for web-sites
|
83
|
+
test_files:
|
84
|
+
- spec/data/google_search.html
|
85
|
+
- spec/spec_helper.rb
|
86
|
+
- spec/specs/google_spec.rb
|