slaghund_scraper 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Guardfile +9 -0
- data/LICENSE +22 -0
- data/README.md +85 -0
- data/Rakefile +11 -0
- data/lib/slaghund_scraper.rb +45 -0
- data/lib/slaghund_scraper/version.rb +3 -0
- data/slaghund_scraper.gemspec +24 -0
- data/spec/cassettes/slaghund.yml +589 -0
- data/spec/slaghund_scraper_spec.rb +60 -0
- data/spec/spec_helper.rb +24 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fabb25a8d2bd346345c17e9bd2746b2fb1faa2f0
|
4
|
+
data.tar.gz: 9c3c01a8eb2f7ca6a3c5cd0e5cb7598ca8907b87
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5664e6a5361ea4daddd5c8a91d24f82dc2d44aba5356b0e3374122b8b25dd9af9a9c20b65d5980125e0401a1cdebc24dd7b9e8601537a8389b7b6452efe1dba9
|
7
|
+
data.tar.gz: 46f5ebbe842670e252e0ce2052da996cfc158a66825ab6330efaa33a2cbcc7eaafd21375334147a8748d915d46d66edf5a018af907da40ca17d9771a60e5edf0
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
slaghund_scraper
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0
|
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Matt Wilson
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# SlaghundScraper
|
2
|
+
|
3
|
+
[Slaghund](http://84.205.248.92/slaghund/slagview.aspx) is a nifty little utility that tracks
|
4
|
+
[Android: Netrunner](http://www.fantasyflightgames.com/edge_minisite.asp?eidm=207&enmi=Android:%20Netrunner%20The%20Card%20Game) [OCTGN](http://octgn.gamersjudgement.com/wordpress/anr/) result data. This here is a scraper that will give you CSV.
|
5
|
+
|
6
|
+
You can check out the ANR OCTGN plugin on [github](https://github.com/db0/Android-Netrunner-OCTGN)!
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
gem 'slaghund_scraper'
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install slaghund_scraper
|
21
|
+
|
22
|
+
## Usage / API
|
23
|
+
|
24
|
+
The scraper is really pretty simple. To get results as an array:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
data = SlaghundScraper.new.scrape!
|
28
|
+
```
|
29
|
+
|
30
|
+
Or you can go straight-to-csv:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
csv = SlaghundScraper.new.to_csv
|
34
|
+
```
|
35
|
+
|
36
|
+
Here's what the CSV looks like:
|
37
|
+
|
38
|
+
```csv
|
39
|
+
Jinteki,15063,17653,46.04,3.0,13.0,15,35
|
40
|
+
Personal Evolution,11217,11854,48.62,2.9,12.5,14,34
|
41
|
+
Replicating Perfection,3846,5799,39.88,3.3,14.3,16,36
|
42
|
+
Haas-Bioroid,22010,23345,48.53,4.8,13.4,15,34
|
43
|
+
Engineering the Future,18031,16812,51.75,5.0,13.3,15,34
|
44
|
+
Stronger Together,966,1998,32.59,3.5,12.2,16,36
|
45
|
+
Engineered for Success,577,983,36.99,3.4,21.7,16,33
|
46
|
+
Guarding the Net,1553,2527,38.06,4.4,10.7,14,32
|
47
|
+
Infinite Frontiers,883,1025,46.28,4.4,14.8,15,29
|
48
|
+
Weyland Consortium,16700,15913,51.21,3.5,13.7,14,32
|
49
|
+
Building a Better World,14627,12356,54.21,3.6,13.6,14,32
|
50
|
+
Because We Built It,2073,3557,36.82,3.1,14.3,15,34
|
51
|
+
NBN,19840,19475,50.46,4.3,13.5,15,32
|
52
|
+
Making News,15783,15860,49.88,4.2,13.9,15,34
|
53
|
+
The World Is Yours,4057,3615,52.88,4.4,11.7,13,25
|
54
|
+
Anarch,21428,21373,50.06,5.2,13.6,14,32
|
55
|
+
Noise,15251,14663,50.98,5.3,13.2,14,32
|
56
|
+
Whizzard,6144,6678,47.92,5.0,14.5,15,31
|
57
|
+
Reina Roja,33,32,50.77,5.2,14.6,14,29
|
58
|
+
Shaper,27398,31349,46.64,5.1,12.6,15,34
|
59
|
+
Kate McCaffrey,13916,15617,47.12,5.0,13.0,15,36
|
60
|
+
Chaos Theory,7922,9543,45.36,5.0,14.3,15,31
|
61
|
+
Exile,1119,1333,45.64,5.0,14.5,15,33
|
62
|
+
Rielle Kit Peddler,3490,3674,48.72,5.4,9.5,15,31
|
63
|
+
The Professor,766,1072,41.68,4.8,1.0,15,31
|
64
|
+
The Collective,185,110,62.71,5.5,4.9,14,31
|
65
|
+
Criminal,27560,20891,56.88,5.6,13.8,15,34
|
66
|
+
Gabriel Santiago,16173,13115,55.22,5.5,13.2,15,36
|
67
|
+
Andromeda,11258,7619,59.64,5.7,14.6,15,31
|
68
|
+
Laramy Fisk,129,157,45.10,5.0,14.4,13,26
|
69
|
+
```
|
70
|
+
|
71
|
+
The columns are:
|
72
|
+
|
73
|
+
`Name, Wins, Losses, Win Percentage, Average Agenda Points, Average Influence, Average Turns, Average Game Length`
|
74
|
+
|
75
|
+
## Contributing
|
76
|
+
|
77
|
+
1. Fork it
|
78
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
79
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
80
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
81
|
+
5. Create new Pull Request
|
82
|
+
|
83
|
+
## License
|
84
|
+
|
85
|
+
SlaghundScraper is provided under an MIT license. Have fun and enjoy. Best. Game. Evar.
|
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
6
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
7
|
+
spec.rspec_opts = ['--backtrace']
|
8
|
+
# spec.ruby_opts = ['-w']
|
9
|
+
end
|
10
|
+
|
11
|
+
task :default => :spec
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "slaghund_scraper/version"
|
2
|
+
require "excon"
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
class SlaghundScraper
|
6
|
+
attr_accessor :response, :csv
|
7
|
+
|
8
|
+
SLAGHUND = 'http://84.205.248.92/slaghund/slagview.aspx'
|
9
|
+
|
10
|
+
def fetch_data
|
11
|
+
self.response = Excon.get(SLAGHUND)
|
12
|
+
end
|
13
|
+
|
14
|
+
def nokogirize response = self.response
|
15
|
+
if response.status == 200
|
16
|
+
Nokogiri::HTML(response.body)
|
17
|
+
else
|
18
|
+
raise StandardError.new("Response was: #{response.status}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def reduce doc
|
23
|
+
doc.css('td > table:not([id]) tr').map { |row| clean_line row.text }
|
24
|
+
end
|
25
|
+
|
26
|
+
def clean_line line
|
27
|
+
line
|
28
|
+
.strip
|
29
|
+
.gsub(/\s{2,}/, ' ')
|
30
|
+
.gsub(/-->\s?/, '')
|
31
|
+
.gsub(',', '.')
|
32
|
+
.gsub(/(\(|\)|\/|%|")/, '')
|
33
|
+
.squeeze(' ')
|
34
|
+
.split(/\s(?=\d)/).join(",")
|
35
|
+
end
|
36
|
+
|
37
|
+
def scrape!
|
38
|
+
reduce nokogirize fetch_data
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_csv
|
42
|
+
self.csv = scrape!.join("\r\n")
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/slaghund_scraper/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Matt Wilson"]
|
6
|
+
gem.email = ["mhw@hypomodern.com"]
|
7
|
+
gem.description = %q{Slaghund OCTGN stats scraper}
|
8
|
+
gem.summary = %q{Slaghund OCTGN stats scraper}
|
9
|
+
gem.homepage = ""
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "slaghund_scraper"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = SlaghundScraper::VERSION
|
17
|
+
|
18
|
+
gem.add_development_dependency 'rspec'
|
19
|
+
gem.add_development_dependency 'vcr'
|
20
|
+
gem.add_development_dependency 'guard-rspec'
|
21
|
+
gem.add_dependency 'excon'
|
22
|
+
gem.add_dependency 'nokogiri'
|
23
|
+
gem.add_dependency 'rake'
|
24
|
+
end
|
@@ -0,0 +1,589 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://84.205.248.92/slaghund/slagview.aspx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- excon/0.25.3
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 200
|
15
|
+
message:
|
16
|
+
headers:
|
17
|
+
Cache-Control:
|
18
|
+
- private
|
19
|
+
Content-Type:
|
20
|
+
- text/html; charset=utf-8
|
21
|
+
Server:
|
22
|
+
- Microsoft-IIS/7.5
|
23
|
+
Set-Cookie:
|
24
|
+
- ASP.NET_SessionId=13jmyvbbf0sbfrsfyudtyuna; path=/; HttpOnly
|
25
|
+
X-AspNet-Version:
|
26
|
+
- 4.0.30319
|
27
|
+
X-Powered-By:
|
28
|
+
- ASP.NET
|
29
|
+
Date:
|
30
|
+
- Sat, 28 Dec 2013 17:40:51 GMT
|
31
|
+
Content-Length:
|
32
|
+
- '50494'
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: "\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
|
36
|
+
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\"
|
37
|
+
xml:lang=\"en\">\r\n<head><link rel=\"stylesheet\" type=\"text/css\" href=\"/Slaghund/DXR.axd?r=1_7-TV937\"
|
38
|
+
/><link rel=\"stylesheet\" type=\"text/css\" href=\"/Slaghund/DXR.axd?r=1_8-TV937\"
|
39
|
+
/><link rel=\"stylesheet\" type=\"text/css\" href=\"/Slaghund/DXR.axd?r=1_1-TV937\"
|
40
|
+
/><title>\r\n\r\n</title><link href=\"Styles/Site.css\" rel=\"stylesheet\"
|
41
|
+
type=\"text/css\" /><link rel=\"stylesheet\" href=\"blueprint/screen.css\"
|
42
|
+
type=\"text/css\" media=\"screen, projection\" /><link rel=\"stylesheet\"
|
43
|
+
href=\"blueprint/print.css\" type=\"text/css\" media=\"print\" /><link rel=\"stylesheet\"
|
44
|
+
href=\"blueprint/plugins/silksprite/sprite.css\" type=\"text/css\" media=\"print\"
|
45
|
+
/> \r\n <!--[if lt IE 8]>\r\n <link rel=\"stylesheet\" href=\"blueprint/ie.css\"
|
46
|
+
type=\"text/css\" media=\"screen, projection\" />\r\n <![endif]-->\r\n
|
47
|
+
\ <script type=\"text/javascript\">\r\n\r\n var _gaq = _gaq || [];\r\n
|
48
|
+
\ _gaq.push(['_setAccount', 'UA-36792075-1']);\r\n _gaq.push(['_trackPageview']);\r\n\r\n
|
49
|
+
\ (function () {\r\n var ga = document.createElement('script');
|
50
|
+
ga.type = 'text/javascript'; ga.async = true;\r\n ga.src = ('https:'
|
51
|
+
== document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r\n
|
52
|
+
\ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga,
|
53
|
+
s);\r\n })();\r\n\r\n</script>\r\n \r\n <title></title>\r\n <script
|
54
|
+
type=\"text/javascript\">\r\n // <![CDATA[\r\n var postponedCallbackRequired
|
55
|
+
= false;\r\n function OnItemClick(value) {\r\n if (CallbackPanel.InCallback())\r\n
|
56
|
+
\ postponedCallbackRequired = true;\r\n else\r\n
|
57
|
+
\ CallbackPanel.PerformCallback(value);\r\n }\r\n function
|
58
|
+
OnEndCallback(s, e) {\r\n if (postponedCallbackRequired) {\r\n
|
59
|
+
\ CallbackPanel.PerformCallback();\r\n postponedCallbackRequired
|
60
|
+
= false;\r\n }\r\n }\r\n // ]]> \r\n </script>\r\n
|
61
|
+
\ \r\n <script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\"></script>\r\n
|
62
|
+
\ <script type=\"text/javascript\" src=\"Scripts/highcharts.js\"></script>\r\n</head>\r\n<body>\r\n
|
63
|
+
\ <form method=\"post\" action=\"slagview.aspx\" id=\"ctl01\">\r\n<input
|
64
|
+
type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"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\"
|
65
|
+
/>\r\n\r\n<script type=\"text/javascript\">\r\n$(function () {\r\n var
|
66
|
+
chart;\r\n $(document).ready(function () {\r\n chart = new Highcharts.Chart({\r\n
|
67
|
+
\ chart: {\r\n renderTo: 'chart',\r\n type:
|
68
|
+
'column'\r\n },\r\n title: {\r\n text:
|
69
|
+
'Game Breakdown by Month'\r\n },\r\n xAxis: {\r\n categories:
|
70
|
+
['2012-9','2012-10','2012-11','2012-12','2013-1','2013-2','2013-3','2013-4','2013-5','2013-6','2013-7','2013-8','2013-9','2013-10','2013-11','2013-12',]\r\n
|
71
|
+
\ },\r\n yAxis: {\r\n min: 0,\r\n title:
|
72
|
+
{\r\n text: 'Total Games'\r\n },\r\n stackLabels:
|
73
|
+
{\r\n enabled: true,\r\n style: {\r\n
|
74
|
+
\ fontWeight: 'bold',\r\n color:
|
75
|
+
(Highcharts.theme && Highcharts.theme.textColor) || 'gray'\r\n }\r\n
|
76
|
+
\ }\r\n },\r\n legend: {\r\n align:
|
77
|
+
'right',\r\n x: -100,\r\n verticalAlign: 'top',\r\n
|
78
|
+
\ y: 20,\r\n floating: true,\r\n backgroundColor:
|
79
|
+
(Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',\r\n
|
80
|
+
\ borderColor: '#CCC',\r\n borderWidth: 1,\r\n
|
81
|
+
\ shadow: false\r\n },\r\n tooltip: {\r\n
|
82
|
+
\ formatter: function () {\r\n return '<b>'
|
83
|
+
+ this.x + '</b><br/>' +\r\n this.series.name + ':
|
84
|
+
' + this.y + ' (' + this.point.percentage.toFixed(2) + '%)<br/>' +\r\n 'Total:
|
85
|
+
' + this.point.stackTotal;\r\n }\r\n },\r\n plotOptions:
|
86
|
+
{\r\n column: {\r\n stacking: 'normal',\r\n
|
87
|
+
\ dataLabels: {\r\n enabled: true,\r\n
|
88
|
+
\ color: (Highcharts.theme && Highcharts.theme.dataLabelsColor)
|
89
|
+
|| 'white'\r\n }\r\n }\r\n },\r\n
|
90
|
+
\ series: [{name:'Corp Wins', data: [334,1257,1101,1133,2638,4154,5062,6008,6606,6878,6173,8243,6597,7950,6351,3128,]},{name:'Runner
|
91
|
+
Wins', data: [437,1278,1204,1186,2825,4262,5042,6399,7069,6648,6109,9117,6897,8093,6685,3135,]}]\r\n
|
92
|
+
\ });\r\n });\r\n\r\n});</script>\r\n<input type=\"hidden\" name=\"__EVENTVALIDATION\"
|
93
|
+
id=\"__EVENTVALIDATION\" value=\"/wEWAgKryun3AQKqi5szSYAua8OmzFKr6X6JW5IsZ7z4wVzPLqRAuZd+yNUb4AA=\"
|
94
|
+
/>\r\n <div class=\"page\">\r\n <div class=\"header\">\r\n <div
|
95
|
+
class=\"legend\">\r\n <h1>\r\n Slaghund\r\n
|
96
|
+
\ </h1>\r\n </div>\r\n </div>\r\n <div
|
97
|
+
class=\"main\">\r\n \r\n \r\n <div class=\"success\">\r\n
|
98
|
+
\ Stat tracking for Android:Netrunner matches played over Octagon</div>\r\n
|
99
|
+
\ \r\n <div class=\"box \" align=\"center\">\r\n <table
|
100
|
+
width=\"100%\" cellspacing=\"1\" valign=\"top\">\r\n <tr>\r\n
|
101
|
+
\ <td><span id=\"MainContent_lbTotalMatches\"><div class='notice'>Total
|
102
|
+
Matches Tracked: <b>149999</b> - Total Unique Players:<b>9139</b></div></span>\r\n
|
103
|
+
\ </td>\r\n <td align=\"left\">\r\n
|
104
|
+
\ <span id=\"MainContent_lbCorpWins\"><div class='success'>Corporation
|
105
|
+
Victories: <b>73613</b></div></span>   \r\n <span
|
106
|
+
id=\"MainContent_lbRunnerWins\"><div class='alert'>Runner Victories: <b>76386</b></div></span>\r\n
|
107
|
+
\ </td>\r\n </tr>\r\n <tr>\r\n
|
108
|
+
\ <td colspan=\"2\" align=\"center\">\r\n <div
|
109
|
+
id=\"chart\"></div>\r\n <p class=\"notice\">\r\n <b>Detailed
|
110
|
+
Breakdown</b></p>\r\n </td>\r\n </tr>\r\n
|
111
|
+
\ <tr>\r\n <td valign=\"top\" style=\"vertical-align:top\">\r\n
|
112
|
+
\ \r\n <table>\r\n <thead>\r\n
|
113
|
+
\ <td>\r\n <b>Corporation</b>\r\n
|
114
|
+
\ </td>\r\n <td
|
115
|
+
class=\"label\" align=\"center\">\r\n <div
|
116
|
+
align=\"center\"><b>Win/Loss %</b></div>\r\n </td>\r\n
|
117
|
+
\ <td class=\"label\" align=\"center\">\r\n
|
118
|
+
\ <div align=\"center\"><b>Av. Score</b></div>\r\n
|
119
|
+
\ </td>\r\n <td
|
120
|
+
class=\"label\" align=\"center\">\r\n <div
|
121
|
+
align=\"center\"><b>Av. Influence</b></div>\r\n </td>\r\n
|
122
|
+
\ <td class=\"label\" align=\"center\">\r\n
|
123
|
+
\ <div align=\"center\"><b>Av. Turns</b></div>\r\n
|
124
|
+
\ </td>\r\n <td
|
125
|
+
class=\"label\" align=\"center\">\r\n <div
|
126
|
+
align=\"center\"><b>Av. Duration</b></div>\r\n </td>\r\n
|
127
|
+
\ </thead>\r\n \r\n
|
128
|
+
\ <tr>\r\n <td
|
129
|
+
align=\"left\">\r\n <a href=\"#\" onclick=\"OnItemClick('Jinteki')\">\r\n
|
130
|
+
\ Jinteki</a>\r\n </td>\r\n
|
131
|
+
\ <td>\r\n <div
|
132
|
+
align=\"center\">15063 / 17653 (46,04%)</div>\r\n </td>\r\n
|
133
|
+
\ <td align=\"center\">\r\n <div
|
134
|
+
align=\"center\">3,0</div>\r\n </td>\r\n
|
135
|
+
\ <td align=\"center\">\r\n <div
|
136
|
+
align=\"center\">13,0</div>\r\n </td>\r\n
|
137
|
+
\ <td align=\"center\">\r\n <div
|
138
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
139
|
+
\ <td align=\"center\">\r\n <div
|
140
|
+
align=\"center\">35</div>\r\n </td>\r\n
|
141
|
+
\ </tr>\r\n \r\n
|
142
|
+
\ \r\n \r\n <tr>\r\n
|
143
|
+
\ <td align=\"right\">\r\n \r\n
|
144
|
+
\ --> Personal Evolution\r\n </td>\r\n
|
145
|
+
\ <td>\r\n <div
|
146
|
+
align=\"center\">11217 / 11854 (48,62%)</div>\r\n </td>\r\n
|
147
|
+
\ <td align=\"center\">\r\n <div
|
148
|
+
align=\"center\">2,9</div>\r\n </td>\r\n
|
149
|
+
\ <td align=\"center\">\r\n <div
|
150
|
+
align=\"center\">12,5</div>\r\n </td>\r\n
|
151
|
+
\ <td align=\"center\">\r\n <div
|
152
|
+
align=\"center\">14</div>\r\n </td>\r\n
|
153
|
+
\ <td align=\"center\">\r\n <div
|
154
|
+
align=\"center\">34</div>\r\n </td>\r\n
|
155
|
+
\ </tr>\r\n \r\n
|
156
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
157
|
+
\ \r\n -->
|
158
|
+
\ Replicating Perfection\r\n </td>\r\n
|
159
|
+
\ <td>\r\n <div
|
160
|
+
align=\"center\">3846 / 5799 (39,88%)</div>\r\n </td>\r\n
|
161
|
+
\ <td align=\"center\">\r\n <div
|
162
|
+
align=\"center\">3,3</div>\r\n </td>\r\n
|
163
|
+
\ <td align=\"center\">\r\n <div
|
164
|
+
align=\"center\">14,3</div>\r\n </td>\r\n
|
165
|
+
\ <td align=\"center\">\r\n <div
|
166
|
+
align=\"center\">16</div>\r\n </td>\r\n
|
167
|
+
\ <td align=\"center\">\r\n <div
|
168
|
+
align=\"center\">36</div>\r\n </td>\r\n
|
169
|
+
\ </tr>\r\n \r\n
|
170
|
+
\ \r\n \r\n <tr>\r\n
|
171
|
+
\ <td align=\"left\">\r\n <a
|
172
|
+
href=\"#\" onclick=\"OnItemClick('Haas-Bioroid')\">\r\n Haas-Bioroid</a>\r\n
|
173
|
+
\ </td>\r\n <td>\r\n
|
174
|
+
\ <div align=\"center\">22010 / 23345
|
175
|
+
(48,53%)</div>\r\n </td>\r\n <td
|
176
|
+
align=\"center\">\r\n <div align=\"center\">4,8</div>\r\n
|
177
|
+
\ </td>\r\n <td
|
178
|
+
align=\"center\">\r\n <div align=\"center\">13,4</div>\r\n
|
179
|
+
\ </td>\r\n <td
|
180
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
181
|
+
\ </td>\r\n <td
|
182
|
+
align=\"center\">\r\n <div align=\"center\">34</div>\r\n
|
183
|
+
\ </td>\r\n </tr>\r\n
|
184
|
+
\ \r\n \r\n \r\n
|
185
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
186
|
+
\ \r\n -->
|
187
|
+
\ Engineering the Future\r\n </td>\r\n
|
188
|
+
\ <td>\r\n <div
|
189
|
+
align=\"center\">18031 / 16812 (51,75%)</div>\r\n </td>\r\n
|
190
|
+
\ <td align=\"center\">\r\n <div
|
191
|
+
align=\"center\">5,0</div>\r\n </td>\r\n
|
192
|
+
\ <td align=\"center\">\r\n <div
|
193
|
+
align=\"center\">13,3</div>\r\n </td>\r\n
|
194
|
+
\ <td align=\"center\">\r\n <div
|
195
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
196
|
+
\ <td align=\"center\">\r\n <div
|
197
|
+
align=\"center\">34</div>\r\n </td>\r\n
|
198
|
+
\ </tr>\r\n \r\n
|
199
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
200
|
+
\ \r\n -->
|
201
|
+
\ Stronger Together\r\n </td>\r\n <td>\r\n
|
202
|
+
\ <div align=\"center\">966 / 1998 (32,59%)</div>\r\n
|
203
|
+
\ </td>\r\n <td
|
204
|
+
align=\"center\">\r\n <div align=\"center\">3,5</div>\r\n
|
205
|
+
\ </td>\r\n <td
|
206
|
+
align=\"center\">\r\n <div align=\"center\">12,2</div>\r\n
|
207
|
+
\ </td>\r\n <td
|
208
|
+
align=\"center\">\r\n <div align=\"center\">16</div>\r\n
|
209
|
+
\ </td>\r\n <td
|
210
|
+
align=\"center\">\r\n <div align=\"center\">36</div>\r\n
|
211
|
+
\ </td>\r\n </tr>\r\n
|
212
|
+
\ \r\n <tr>\r\n <td
|
213
|
+
align=\"right\">\r\n \r\n -->
|
214
|
+
\ Engineered for Success\r\n </td>\r\n
|
215
|
+
\ <td>\r\n <div
|
216
|
+
align=\"center\">577 / 983 (36,99%)</div>\r\n </td>\r\n
|
217
|
+
\ <td align=\"center\">\r\n <div
|
218
|
+
align=\"center\">3,4</div>\r\n </td>\r\n
|
219
|
+
\ <td align=\"center\">\r\n <div
|
220
|
+
align=\"center\">21,7</div>\r\n </td>\r\n
|
221
|
+
\ <td align=\"center\">\r\n <div
|
222
|
+
align=\"center\">16</div>\r\n </td>\r\n
|
223
|
+
\ <td align=\"center\">\r\n <div
|
224
|
+
align=\"center\">33</div>\r\n </td>\r\n
|
225
|
+
\ </tr>\r\n \r\n
|
226
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
227
|
+
\ \r\n -->
|
228
|
+
\ Guarding the Net\r\n </td>\r\n <td>\r\n
|
229
|
+
\ <div align=\"center\">1553 / 2527
|
230
|
+
(38,06%)</div>\r\n </td>\r\n <td
|
231
|
+
align=\"center\">\r\n <div align=\"center\">4,4</div>\r\n
|
232
|
+
\ </td>\r\n <td
|
233
|
+
align=\"center\">\r\n <div align=\"center\">10,7</div>\r\n
|
234
|
+
\ </td>\r\n <td
|
235
|
+
align=\"center\">\r\n <div align=\"center\">14</div>\r\n
|
236
|
+
\ </td>\r\n <td
|
237
|
+
align=\"center\">\r\n <div align=\"center\">32</div>\r\n
|
238
|
+
\ </td>\r\n </tr>\r\n
|
239
|
+
\ \r\n <tr>\r\n <td
|
240
|
+
align=\"right\">\r\n \r\n -->
|
241
|
+
\ Infinite Frontiers\r\n </td>\r\n <td>\r\n
|
242
|
+
\ <div align=\"center\">883 / 1025 (46,28%)</div>\r\n
|
243
|
+
\ </td>\r\n <td
|
244
|
+
align=\"center\">\r\n <div align=\"center\">4,4</div>\r\n
|
245
|
+
\ </td>\r\n <td
|
246
|
+
align=\"center\">\r\n <div align=\"center\">14,8</div>\r\n
|
247
|
+
\ </td>\r\n <td
|
248
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
249
|
+
\ </td>\r\n <td
|
250
|
+
align=\"center\">\r\n <div align=\"center\">29</div>\r\n
|
251
|
+
\ </td>\r\n </tr>\r\n
|
252
|
+
\ \r\n \r\n \r\n
|
253
|
+
\ <tr>\r\n <td
|
254
|
+
align=\"left\">\r\n <a href=\"#\" onclick=\"OnItemClick('Weyland
|
255
|
+
Consortium')\">\r\n Weyland Consortium</a>\r\n
|
256
|
+
\ </td>\r\n <td>\r\n
|
257
|
+
\ <div align=\"center\">16700 / 15913
|
258
|
+
(51,21%)</div>\r\n </td>\r\n <td
|
259
|
+
align=\"center\">\r\n <div align=\"center\">3,5</div>\r\n
|
260
|
+
\ </td>\r\n <td
|
261
|
+
align=\"center\">\r\n <div align=\"center\">13,7</div>\r\n
|
262
|
+
\ </td>\r\n <td
|
263
|
+
align=\"center\">\r\n <div align=\"center\">14</div>\r\n
|
264
|
+
\ </td>\r\n <td
|
265
|
+
align=\"center\">\r\n <div align=\"center\">32</div>\r\n
|
266
|
+
\ </td>\r\n </tr>\r\n
|
267
|
+
\ \r\n \r\n \r\n
|
268
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
269
|
+
\ \r\n -->
|
270
|
+
\ Building a Better World\r\n </td>\r\n
|
271
|
+
\ <td>\r\n <div
|
272
|
+
align=\"center\">14627 / 12356 (54,21%)</div>\r\n </td>\r\n
|
273
|
+
\ <td align=\"center\">\r\n <div
|
274
|
+
align=\"center\">3,6</div>\r\n </td>\r\n
|
275
|
+
\ <td align=\"center\">\r\n <div
|
276
|
+
align=\"center\">13,6</div>\r\n </td>\r\n
|
277
|
+
\ <td align=\"center\">\r\n <div
|
278
|
+
align=\"center\">14</div>\r\n </td>\r\n
|
279
|
+
\ <td align=\"center\">\r\n <div
|
280
|
+
align=\"center\">32</div>\r\n </td>\r\n
|
281
|
+
\ </tr>\r\n \r\n
|
282
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
283
|
+
\ \r\n -->
|
284
|
+
\ Because We Built It\r\n </td>\r\n <td>\r\n
|
285
|
+
\ <div align=\"center\">2073 / 3557
|
286
|
+
(36,82%)</div>\r\n </td>\r\n <td
|
287
|
+
align=\"center\">\r\n <div align=\"center\">3,1</div>\r\n
|
288
|
+
\ </td>\r\n <td
|
289
|
+
align=\"center\">\r\n <div align=\"center\">14,3</div>\r\n
|
290
|
+
\ </td>\r\n <td
|
291
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
292
|
+
\ </td>\r\n <td
|
293
|
+
align=\"center\">\r\n <div align=\"center\">34</div>\r\n
|
294
|
+
\ </td>\r\n </tr>\r\n
|
295
|
+
\ \r\n \r\n \r\n
|
296
|
+
\ <tr>\r\n <td
|
297
|
+
align=\"left\">\r\n <a href=\"#\" onclick=\"OnItemClick('NBN')\">\r\n
|
298
|
+
\ NBN</a>\r\n </td>\r\n
|
299
|
+
\ <td>\r\n <div
|
300
|
+
align=\"center\">19840 / 19475 (50,46%)</div>\r\n </td>\r\n
|
301
|
+
\ <td align=\"center\">\r\n <div
|
302
|
+
align=\"center\">4,3</div>\r\n </td>\r\n
|
303
|
+
\ <td align=\"center\">\r\n <div
|
304
|
+
align=\"center\">13,5</div>\r\n </td>\r\n
|
305
|
+
\ <td align=\"center\">\r\n <div
|
306
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
307
|
+
\ <td align=\"center\">\r\n <div
|
308
|
+
align=\"center\">32</div>\r\n </td>\r\n
|
309
|
+
\ </tr>\r\n \r\n
|
310
|
+
\ \r\n \r\n <tr>\r\n
|
311
|
+
\ <td align=\"right\">\r\n \r\n
|
312
|
+
\ --> Making News\r\n </td>\r\n
|
313
|
+
\ <td>\r\n <div
|
314
|
+
align=\"center\">15783 / 15860 (49,88%)</div>\r\n </td>\r\n
|
315
|
+
\ <td align=\"center\">\r\n <div
|
316
|
+
align=\"center\">4,2</div>\r\n </td>\r\n
|
317
|
+
\ <td align=\"center\">\r\n <div
|
318
|
+
align=\"center\">13,9</div>\r\n </td>\r\n
|
319
|
+
\ <td align=\"center\">\r\n <div
|
320
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
321
|
+
\ <td align=\"center\">\r\n <div
|
322
|
+
align=\"center\">34</div>\r\n </td>\r\n
|
323
|
+
\ </tr>\r\n \r\n
|
324
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
325
|
+
\ \r\n -->
|
326
|
+
\ The World Is Yours\r\n </td>\r\n <td>\r\n
|
327
|
+
\ <div align=\"center\">4057 / 3615
|
328
|
+
(52,88%)</div>\r\n </td>\r\n <td
|
329
|
+
align=\"center\">\r\n <div align=\"center\">4,4</div>\r\n
|
330
|
+
\ </td>\r\n <td
|
331
|
+
align=\"center\">\r\n <div align=\"center\">11,7</div>\r\n
|
332
|
+
\ </td>\r\n <td
|
333
|
+
align=\"center\">\r\n <div align=\"center\">13</div>\r\n
|
334
|
+
\ </td>\r\n <td
|
335
|
+
align=\"center\">\r\n <div align=\"center\">25</div>\r\n
|
336
|
+
\ </td>\r\n </tr>\r\n
|
337
|
+
\ \r\n \r\n \r\n
|
338
|
+
\ </table>\r\n </td>\r\n
|
339
|
+
\ <td valign=\"top\" style=\"vertical-align:top\">\r\n \r\n
|
340
|
+
\ <table>\r\n <thead>\r\n
|
341
|
+
\ <td>\r\n <b>Runner</b>\r\n
|
342
|
+
\ </td>\r\n <td
|
343
|
+
class=\"label\" align=\"center\">\r\n <div
|
344
|
+
align=\"center\"><b>Win/Loss %</b></div>\r\n </td>\r\n
|
345
|
+
\ <td class=\"label\" align=\"center\">\r\n
|
346
|
+
\ <div align=\"center\"><b>Av. Score</b></div>\r\n
|
347
|
+
\ </td>\r\n <td
|
348
|
+
class=\"label\" align=\"center\">\r\n <div
|
349
|
+
align=\"center\"><b>Av. Influence</b></div>\r\n </td>\r\n
|
350
|
+
\ <td class=\"label\" align=\"center\">\r\n
|
351
|
+
\ <div align=\"center\"><b>Av. Turns</b></div>\r\n
|
352
|
+
\ </td>\r\n <td
|
353
|
+
class=\"label\" align=\"center\">\r\n <div
|
354
|
+
align=\"center\"><b>Av. Duration</b></div>\r\n </td>\r\n
|
355
|
+
\ </thead>\r\n \r\n
|
356
|
+
\ <tr>\r\n <td>\r\n
|
357
|
+
\ <a href=\"#\" onclick=\"OnItemClick('Anarch')\">\r\n
|
358
|
+
\ Anarch</a>\r\n </td>\r\n
|
359
|
+
\ <td align=\"center\">\r\n <div
|
360
|
+
align=\"center\">21428 / 21373 (50,06%)</div>\r\n </td>\r\n
|
361
|
+
\ <td align=\"center\">\r\n <div
|
362
|
+
align=\"center\">5,2</div>\r\n </td>\r\n
|
363
|
+
\ <td align=\"center\">\r\n <div
|
364
|
+
align=\"center\">13,6</div>\r\n </td>\r\n
|
365
|
+
\ <td align=\"center\">\r\n <div
|
366
|
+
align=\"center\">14</div>\r\n </td>\r\n
|
367
|
+
\ <td align=\"center\">\r\n <div
|
368
|
+
align=\"center\">32</div>\r\n </td>\r\n
|
369
|
+
\ </tr>\r\n \r\n
|
370
|
+
\ \r\n \r\n <tr>\r\n
|
371
|
+
\ <td align=\"right\">\r\n \r\n
|
372
|
+
\ --> Noise\r\n </td>\r\n
|
373
|
+
\ <td>\r\n <div
|
374
|
+
align=\"center\">15251 / 14663 (50,98%)</div>\r\n </td>\r\n
|
375
|
+
\ <td align=\"center\">\r\n <div
|
376
|
+
align=\"center\">5,3</div>\r\n </td>\r\n
|
377
|
+
\ <td align=\"center\">\r\n <div
|
378
|
+
align=\"center\">13,2</div>\r\n </td>\r\n
|
379
|
+
\ <td align=\"center\">\r\n <div
|
380
|
+
align=\"center\">14</div>\r\n </td>\r\n
|
381
|
+
\ <td align=\"center\">\r\n <div
|
382
|
+
align=\"center\">32</div>\r\n </td>\r\n
|
383
|
+
\ </tr>\r\n \r\n
|
384
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
385
|
+
\ \r\n -->
|
386
|
+
\ Whizzard\r\n </td>\r\n <td>\r\n
|
387
|
+
\ <div align=\"center\">6144 / 6678
|
388
|
+
(47,92%)</div>\r\n </td>\r\n <td
|
389
|
+
align=\"center\">\r\n <div align=\"center\">5,0</div>\r\n
|
390
|
+
\ </td>\r\n <td
|
391
|
+
align=\"center\">\r\n <div align=\"center\">14,5</div>\r\n
|
392
|
+
\ </td>\r\n <td
|
393
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
394
|
+
\ </td>\r\n <td
|
395
|
+
align=\"center\">\r\n <div align=\"center\">31</div>\r\n
|
396
|
+
\ </td>\r\n </tr>\r\n
|
397
|
+
\ \r\n <tr>\r\n <td
|
398
|
+
align=\"right\">\r\n \r\n -->
|
399
|
+
\ Reina Roja\r\n </td>\r\n <td>\r\n
|
400
|
+
\ <div align=\"center\">33 / 32 (50,77%)</div>\r\n
|
401
|
+
\ </td>\r\n <td
|
402
|
+
align=\"center\">\r\n <div align=\"center\">5,2</div>\r\n
|
403
|
+
\ </td>\r\n <td
|
404
|
+
align=\"center\">\r\n <div align=\"center\">14,6</div>\r\n
|
405
|
+
\ </td>\r\n <td
|
406
|
+
align=\"center\">\r\n <div align=\"center\">14</div>\r\n
|
407
|
+
\ </td>\r\n <td
|
408
|
+
align=\"center\">\r\n <div align=\"center\">29</div>\r\n
|
409
|
+
\ </td>\r\n </tr>\r\n
|
410
|
+
\ \r\n \r\n \r\n
|
411
|
+
\ <tr>\r\n <td>\r\n
|
412
|
+
\ <a href=\"#\" onclick=\"OnItemClick('Shaper')\">\r\n
|
413
|
+
\ Shaper</a>\r\n </td>\r\n
|
414
|
+
\ <td align=\"center\">\r\n <div
|
415
|
+
align=\"center\">27398 / 31349 (46,64%)</div>\r\n </td>\r\n
|
416
|
+
\ <td align=\"center\">\r\n <div
|
417
|
+
align=\"center\">5,1</div>\r\n </td>\r\n
|
418
|
+
\ <td align=\"center\">\r\n <div
|
419
|
+
align=\"center\">12,6</div>\r\n </td>\r\n
|
420
|
+
\ <td align=\"center\">\r\n <div
|
421
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
422
|
+
\ <td align=\"center\">\r\n <div
|
423
|
+
align=\"center\">34</div>\r\n </td>\r\n
|
424
|
+
\ </tr>\r\n \r\n
|
425
|
+
\ \r\n \r\n <tr>\r\n
|
426
|
+
\ <td align=\"right\">\r\n \r\n
|
427
|
+
\ --> Kate McCaffrey\r\n </td>\r\n
|
428
|
+
\ <td>\r\n <div
|
429
|
+
align=\"center\">13916 / 15617 (47,12%)</div>\r\n </td>\r\n
|
430
|
+
\ <td align=\"center\">\r\n <div
|
431
|
+
align=\"center\">5,0</div>\r\n </td>\r\n
|
432
|
+
\ <td align=\"center\">\r\n <div
|
433
|
+
align=\"center\">13,0</div>\r\n </td>\r\n
|
434
|
+
\ <td align=\"center\">\r\n <div
|
435
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
436
|
+
\ <td align=\"center\">\r\n <div
|
437
|
+
align=\"center\">36</div>\r\n </td>\r\n
|
438
|
+
\ </tr>\r\n \r\n
|
439
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
440
|
+
\ \r\n -->
|
441
|
+
\ Chaos Theory\r\n </td>\r\n <td>\r\n
|
442
|
+
\ <div align=\"center\">7922 / 9543
|
443
|
+
(45,36%)</div>\r\n </td>\r\n <td
|
444
|
+
align=\"center\">\r\n <div align=\"center\">5,0</div>\r\n
|
445
|
+
\ </td>\r\n <td
|
446
|
+
align=\"center\">\r\n <div align=\"center\">14,3</div>\r\n
|
447
|
+
\ </td>\r\n <td
|
448
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
449
|
+
\ </td>\r\n <td
|
450
|
+
align=\"center\">\r\n <div align=\"center\">31</div>\r\n
|
451
|
+
\ </td>\r\n </tr>\r\n
|
452
|
+
\ \r\n <tr>\r\n <td
|
453
|
+
align=\"right\">\r\n \r\n -->
|
454
|
+
\ Exile\r\n </td>\r\n <td>\r\n
|
455
|
+
\ <div align=\"center\">1119 / 1333
|
456
|
+
(45,64%)</div>\r\n </td>\r\n <td
|
457
|
+
align=\"center\">\r\n <div align=\"center\">5,0</div>\r\n
|
458
|
+
\ </td>\r\n <td
|
459
|
+
align=\"center\">\r\n <div align=\"center\">14,5</div>\r\n
|
460
|
+
\ </td>\r\n <td
|
461
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
462
|
+
\ </td>\r\n <td
|
463
|
+
align=\"center\">\r\n <div align=\"center\">33</div>\r\n
|
464
|
+
\ </td>\r\n </tr>\r\n
|
465
|
+
\ \r\n <tr>\r\n <td
|
466
|
+
align=\"right\">\r\n \r\n -->
|
467
|
+
\ Rielle \"Kit\" Peddler\r\n </td>\r\n
|
468
|
+
\ <td>\r\n <div
|
469
|
+
align=\"center\">3490 / 3674 (48,72%)</div>\r\n </td>\r\n
|
470
|
+
\ <td align=\"center\">\r\n <div
|
471
|
+
align=\"center\">5,4</div>\r\n </td>\r\n
|
472
|
+
\ <td align=\"center\">\r\n <div
|
473
|
+
align=\"center\">9,5</div>\r\n </td>\r\n
|
474
|
+
\ <td align=\"center\">\r\n <div
|
475
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
476
|
+
\ <td align=\"center\">\r\n <div
|
477
|
+
align=\"center\">31</div>\r\n </td>\r\n
|
478
|
+
\ </tr>\r\n \r\n
|
479
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
480
|
+
\ \r\n -->
|
481
|
+
\ The Professor\r\n </td>\r\n <td>\r\n
|
482
|
+
\ <div align=\"center\">766 / 1072 (41,68%)</div>\r\n
|
483
|
+
\ </td>\r\n <td
|
484
|
+
align=\"center\">\r\n <div align=\"center\">4,8</div>\r\n
|
485
|
+
\ </td>\r\n <td
|
486
|
+
align=\"center\">\r\n <div align=\"center\">1,0</div>\r\n
|
487
|
+
\ </td>\r\n <td
|
488
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
489
|
+
\ </td>\r\n <td
|
490
|
+
align=\"center\">\r\n <div align=\"center\">31</div>\r\n
|
491
|
+
\ </td>\r\n </tr>\r\n
|
492
|
+
\ \r\n <tr>\r\n <td
|
493
|
+
align=\"right\">\r\n \r\n -->
|
494
|
+
\ The Collective\r\n </td>\r\n <td>\r\n
|
495
|
+
\ <div align=\"center\">185 / 110 (62,71%)</div>\r\n
|
496
|
+
\ </td>\r\n <td
|
497
|
+
align=\"center\">\r\n <div align=\"center\">5,5</div>\r\n
|
498
|
+
\ </td>\r\n <td
|
499
|
+
align=\"center\">\r\n <div align=\"center\">4,9</div>\r\n
|
500
|
+
\ </td>\r\n <td
|
501
|
+
align=\"center\">\r\n <div align=\"center\">14</div>\r\n
|
502
|
+
\ </td>\r\n <td
|
503
|
+
align=\"center\">\r\n <div align=\"center\">31</div>\r\n
|
504
|
+
\ </td>\r\n </tr>\r\n
|
505
|
+
\ \r\n \r\n \r\n
|
506
|
+
\ <tr>\r\n <td>\r\n
|
507
|
+
\ <a href=\"#\" onclick=\"OnItemClick('Criminal')\">\r\n
|
508
|
+
\ Criminal</a>\r\n </td>\r\n
|
509
|
+
\ <td align=\"center\">\r\n <div
|
510
|
+
align=\"center\">27560 / 20891 (56,88%)</div>\r\n </td>\r\n
|
511
|
+
\ <td align=\"center\">\r\n <div
|
512
|
+
align=\"center\">5,6</div>\r\n </td>\r\n
|
513
|
+
\ <td align=\"center\">\r\n <div
|
514
|
+
align=\"center\">13,8</div>\r\n </td>\r\n
|
515
|
+
\ <td align=\"center\">\r\n <div
|
516
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
517
|
+
\ <td align=\"center\">\r\n <div
|
518
|
+
align=\"center\">34</div>\r\n </td>\r\n
|
519
|
+
\ </tr>\r\n \r\n
|
520
|
+
\ \r\n \r\n <tr>\r\n
|
521
|
+
\ <td align=\"right\">\r\n \r\n
|
522
|
+
\ --> Gabriel Santiago\r\n </td>\r\n
|
523
|
+
\ <td>\r\n <div
|
524
|
+
align=\"center\">16173 / 13115 (55,22%)</div>\r\n </td>\r\n
|
525
|
+
\ <td align=\"center\">\r\n <div
|
526
|
+
align=\"center\">5,5</div>\r\n </td>\r\n
|
527
|
+
\ <td align=\"center\">\r\n <div
|
528
|
+
align=\"center\">13,2</div>\r\n </td>\r\n
|
529
|
+
\ <td align=\"center\">\r\n <div
|
530
|
+
align=\"center\">15</div>\r\n </td>\r\n
|
531
|
+
\ <td align=\"center\">\r\n <div
|
532
|
+
align=\"center\">36</div>\r\n </td>\r\n
|
533
|
+
\ </tr>\r\n \r\n
|
534
|
+
\ <tr>\r\n <td align=\"right\">\r\n
|
535
|
+
\ \r\n -->
|
536
|
+
\ Andromeda\r\n </td>\r\n <td>\r\n
|
537
|
+
\ <div align=\"center\">11258 / 7619
|
538
|
+
(59,64%)</div>\r\n </td>\r\n <td
|
539
|
+
align=\"center\">\r\n <div align=\"center\">5,7</div>\r\n
|
540
|
+
\ </td>\r\n <td
|
541
|
+
align=\"center\">\r\n <div align=\"center\">14,6</div>\r\n
|
542
|
+
\ </td>\r\n <td
|
543
|
+
align=\"center\">\r\n <div align=\"center\">15</div>\r\n
|
544
|
+
\ </td>\r\n <td
|
545
|
+
align=\"center\">\r\n <div align=\"center\">31</div>\r\n
|
546
|
+
\ </td>\r\n </tr>\r\n
|
547
|
+
\ \r\n <tr>\r\n <td
|
548
|
+
align=\"right\">\r\n \r\n -->
|
549
|
+
\ Laramy Fisk\r\n </td>\r\n <td>\r\n
|
550
|
+
\ <div align=\"center\">129 / 157 (45,10%)</div>\r\n
|
551
|
+
\ </td>\r\n <td
|
552
|
+
align=\"center\">\r\n <div align=\"center\">5,0</div>\r\n
|
553
|
+
\ </td>\r\n <td
|
554
|
+
align=\"center\">\r\n <div align=\"center\">14,4</div>\r\n
|
555
|
+
\ </td>\r\n <td
|
556
|
+
align=\"center\">\r\n <div align=\"center\">13</div>\r\n
|
557
|
+
\ </td>\r\n <td
|
558
|
+
align=\"center\">\r\n <div align=\"center\">26</div>\r\n
|
559
|
+
\ </td>\r\n </tr>\r\n
|
560
|
+
\ \r\n \r\n \r\n
|
561
|
+
\ </table>\r\n </td>\r\n
|
562
|
+
\ </tr>\r\n <tr>\r\n <td colspan=\"2\">\r\n
|
563
|
+
\ <hr />\r\n </td>\r\n </tr>\r\n
|
564
|
+
\ <tr>\r\n <td colspan=\"2\">\r\n <input
|
565
|
+
type=\"hidden\"/><script id=\"dxis_928899410\" src=\"/Slaghund/DXR.axd?r=1_142-TV937\"
|
566
|
+
type=\"text/javascript\"></script><script id=\"dxis_829996115\" src=\"/Slaghund/DXR.axd?r=1_80-TV937\"
|
567
|
+
type=\"text/javascript\"></script><script id=\"dxis_969842924\" src=\"/Slaghund/DXR.axd?r=1_135-TV937\"
|
568
|
+
type=\"text/javascript\"></script><script id=\"dxis_1804379365\" src=\"/Slaghund/DXR.axd?r=1_79-TV937\"
|
569
|
+
type=\"text/javascript\"></script><div id=\"MainContent_CallbackPanel\">\r\n\t\r\n
|
570
|
+
\ <span id=\"MainContent_CallbackPanel_lbFaction\">Click
|
571
|
+
on a faction for detailed results</span>\r\n \r\n
|
572
|
+
\ \r\n</div><table id=\"MainContent_CallbackPanel_LP\"
|
573
|
+
class=\"dxcpLoadingPanelWithContent\" cellspacing=\"0\" cellpadding=\"0\"
|
574
|
+
style=\"left:0px;top:0px;z-index:30000;display:none;\">\r\n\t<tr>\r\n\t\t<td
|
575
|
+
class=\"dx\" style=\"padding-right:8px;\"><img src=\"/Slaghund/DXR.axd?r=1_48-TV937\"
|
576
|
+
alt=\"\" align=\"middle\" /></td><td class=\"dx\" style=\"padding-left:0px;\"><span
|
577
|
+
id=\"MainContent_CallbackPanel_TL\">Loading…</span></td>\r\n\t</tr>\r\n</table><div
|
578
|
+
id=\"MainContent_CallbackPanel_LD\" class=\"dxcpLoadingDiv\" style=\"left:0px;top:0px;z-index:29999;display:none;position:absolute;\">\r\n\r\n</div><script
|
579
|
+
id=\"dxss_567921887\" type=\"text/javascript\">\n<!--\n\nvar dxo = new ASPxClientCallbackPanel('MainContent_CallbackPanel');\nwindow['CallbackPanel']
|
580
|
+
= dxo;\ndxo.callBack = function(arg) { WebForm_DoCallback('ctl00$MainContent$CallbackPanel',arg,aspxCallback,'MainContent_CallbackPanel',aspxCallbackError,true);
|
581
|
+
};\ndxo.uniqueID = 'ctl00$MainContent$CallbackPanel';\ndxo.renderIFrameForPopupElements
|
582
|
+
= true;\ndxo.EndCallback.AddHandler(OnEndCallback);\ndxo.hideContentOnCallback=false;\ndxo.InlineInitialize();\n\n//-->\n</script>\r\n
|
583
|
+
\ </td>\r\n </tr>\r\n </table>\r\n
|
584
|
+
\ </div>\r\n\r\n\r\n\r\n </div>\r\n <div class=\"clear\">\r\n
|
585
|
+
\ </div>\r\n </div>\r\n <div class=\"footer\">\r\n \r\n
|
586
|
+
\ </div>\r\n </form>\r\n</body>\r\n</html>\r\n"
|
587
|
+
http_version:
|
588
|
+
recorded_at: Sat, 28 Dec 2013 18:11:46 GMT
|
589
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'csv'
|
3
|
+
|
4
|
+
describe SlaghundScraper do
|
5
|
+
let(:scraper) { SlaghundScraper.new }
|
6
|
+
|
7
|
+
describe "#scrape!", vcr: { cassette_name: 'slaghund' } do
|
8
|
+
it "returns an array of csv-formatted results, one row per ID" do
|
9
|
+
results = scraper.scrape!
|
10
|
+
results.should be_a_kind_of(Array)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#to_csv", vcr: { cassette_name: 'slaghund' } do
|
15
|
+
it "returns a csv document" do
|
16
|
+
doc = scraper.to_csv
|
17
|
+
-> { CSV.parse doc }.should_not raise_error
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#fetch_data", vcr: { cassette_name: 'slaghund' } do
|
22
|
+
it "requests data from SlaghundScraper::SLAGHUND" do
|
23
|
+
Excon.should_receive(:get).with(SlaghundScraper::SLAGHUND)
|
24
|
+
scraper.fetch_data
|
25
|
+
end
|
26
|
+
|
27
|
+
it "saves the response object to the @response ivar" do
|
28
|
+
scraper.fetch_data
|
29
|
+
scraper.response.should be_a_kind_of(Excon::Response)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#nokogirize", vcr: { cassette_name: 'slaghund' } do
|
34
|
+
it "returns a Nokogiri document if the response is successful" do
|
35
|
+
scraper.nokogirize( scraper.fetch_data ).should be_a_kind_of(Nokogiri::HTML::Document)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "raises an exception otherwise" do
|
39
|
+
-> { scraper.nokogirize(double(status: 501)) }.should raise_error
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#reduce", vcr: { cassette_name: 'slaghund' } do
|
44
|
+
it "returns an array of extracted strings" do
|
45
|
+
result = scraper.reduce( scraper.nokogirize( scraper.fetch_data ) )
|
46
|
+
result.should be_a_kind_of(Array)
|
47
|
+
result.each { |line| line.should be_a_kind_of(String) }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#clean_line", vcr: { cassette_name: 'slaghund' } do
|
52
|
+
let(:reina) { "\r\n--> Reina Roja\r\n 33 / 32\r\n (50,77%)\r\n 5,2 14,6 14\r\n29" }
|
53
|
+
subject { scraper.clean_line(reina) }
|
54
|
+
|
55
|
+
it "formats the output as csv" do
|
56
|
+
expect( subject ).to eq 'Reina Roja,33,32,50.77,5.2,14.6,14,29'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
require 'slaghund_scraper'
|
3
|
+
|
4
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
7
|
+
config.run_all_when_everything_filtered = true
|
8
|
+
config.filter_run :focus
|
9
|
+
|
10
|
+
# Run specs in random order to surface order dependencies. If you find an
|
11
|
+
# order dependency and want to debug it, you can fix the order by providing
|
12
|
+
# the seed, which is printed after each run.
|
13
|
+
# --seed 1234
|
14
|
+
config.order = 'random'
|
15
|
+
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
VCR.configure do |c|
|
20
|
+
c.cassette_library_dir = 'spec/cassettes'
|
21
|
+
c.hook_into :excon
|
22
|
+
c.default_cassette_options = { record: :new_episodes }
|
23
|
+
c.configure_rspec_metadata!
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: slaghund_scraper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Wilson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: vcr
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: guard-rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: excon
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: nokogiri
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Slaghund OCTGN stats scraper
|
98
|
+
email:
|
99
|
+
- mhw@hypomodern.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- .gitignore
|
105
|
+
- .rspec
|
106
|
+
- .ruby-gemset
|
107
|
+
- .ruby-version
|
108
|
+
- Gemfile
|
109
|
+
- Guardfile
|
110
|
+
- LICENSE
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- lib/slaghund_scraper.rb
|
114
|
+
- lib/slaghund_scraper/version.rb
|
115
|
+
- slaghund_scraper.gemspec
|
116
|
+
- spec/cassettes/slaghund.yml
|
117
|
+
- spec/slaghund_scraper_spec.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
homepage: ''
|
120
|
+
licenses: []
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.2.0
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: Slaghund OCTGN stats scraper
|
142
|
+
test_files:
|
143
|
+
- spec/cassettes/slaghund.yml
|
144
|
+
- spec/slaghund_scraper_spec.rb
|
145
|
+
- spec/spec_helper.rb
|