rakuten_securities_scraper 0.1.4 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d873285b901058ad29ab9c23ae26499eef29f8e710245cb34f6c657411faff3
4
- data.tar.gz: 2962bdfeb159e0799501fbfd3b5a186e8723eaf20e5862378b5f4cb72f070456
3
+ metadata.gz: 16a2376da1337dfc32d2b319e40110fe7a70448d6c86f77e096b11c7673349e7
4
+ data.tar.gz: 409ee19906a3ea99dff6d41e67460443821a2da9d6e9cb38248ff75c95823b9c
5
5
  SHA512:
6
- metadata.gz: 745a2680da416fc73ee9ca779b1e69bc1ef337b1c1c1ba1a5653691c86f36486f32eba411ddff46b532f0590f073f78d25e103fcc6467f1fe0399c32e6ea833f
7
- data.tar.gz: 9726bb520471add97a7bb9d5e29b2bf5dfa58c65503c6ebdd34a4607829748ae9bd701ad17743bcc4295aea18c8786cf5e5f2ee81ecaf5bb3d85a92055024a02
6
+ metadata.gz: 9b2dead8449bfe20ed0b794ddc4ef8fe715ac68894b4f4939a59850b1b7d112ba903fca01245093ce57463a8b3f2355b82ad1d64475193caabd3e38f9086e9d6
7
+ data.tar.gz: 573093ff0c9c25471f1c15f5a09be55944ce2edbb22f3ccbe9a33783cab6555d9d4913c0c4c7ff0efd71236fb3777e926475c46d36dfadcf0e3579e8f8c8cb2c
@@ -171,9 +171,8 @@ Lint/UnusedMethodArgument:
171
171
  Metrics/AbcSize:
172
172
  Enabled: false
173
173
 
174
- # 6 は強すぎるので緩める
175
174
  Metrics/CyclomaticComplexity:
176
- Max: 10
175
+ Enabled: false
177
176
 
178
177
  Metrics/PerceivedComplexity:
179
178
  Enabled: false
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rakuten_securities_scraper (0.1.2)
4
+ rakuten_securities_scraper (0.1.4)
5
+ selenium-webdriver (~> 3.142.7)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -50,6 +51,7 @@ PLATFORMS
50
51
  ruby
51
52
 
52
53
  DEPENDENCIES
54
+ bundler (~> 2.0)
53
55
  rake (~> 12.0)
54
56
  rakuten_securities_scraper!
55
57
  rspec (~> 3.0)
data/README.md CHANGED
@@ -69,7 +69,7 @@ Or install it yourself as:
69
69
 
70
70
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
71
71
 
72
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
72
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org/gems/rakuten_securities_scraper).
73
73
 
74
74
  ## Contributing
75
75
 
@@ -11,6 +11,72 @@ module RakutenSecuritiesScraper
11
11
  }
12
12
  end
13
13
 
14
+ def login
15
+ driver = get_selenium_driver(:chrome)
16
+ url = "https://www.rakuten-sec.co.jp/ITS/V_ACT_Login.html"
17
+ driver.get url
18
+ driver.find_element(id: "form-login-id").send_keys @login[:login_id]
19
+ driver.find_element(id: "form-login-pass").send_keys @login[:login_pw]
20
+ driver.find_element(id: "login-btn").click
21
+ driver
22
+ end
23
+
24
+ def favorite num, codes
25
+ driver = login
26
+ sleep 2
27
+ driver.action.move_to(driver.find_element(id: "gmenu_domestic_stock")).perform
28
+ sleep 2
29
+ driver.find_element(id: "gmenu_domestic_stock").click
30
+ sleep 2
31
+ driver.find_element(link_text: "お気に入り銘柄").click
32
+ sleep 2
33
+ driver.find_element(link_text: num).click
34
+ sleep 2
35
+ driver.find_element(name: "editAnchor").click
36
+ sleep 2
37
+ driver.find_element(name: "addAnchor").click
38
+ sleep 1
39
+ driver.switch_to.frame driver.find_element(:id, "TB_iframeContent")
40
+ codes.each do |code|
41
+ result = click_favorite driver, code
42
+ next if result == "already exist"
43
+ end
44
+ driver.find_element(id: "prc_save_button1").click
45
+ { status: "success"}
46
+ end
47
+
48
+ def click_favorite driver, code
49
+ sleep 2
50
+ driver.find_element(name: "dscrCdNm").clear
51
+ driver.find_element(name: "dscrCdNm").send_keys code
52
+ driver.find_element(name: "dscrCdNm").send_keys(:enter)
53
+ sleep 2
54
+ rows = driver.find_elements(xpath: "//tr")
55
+ value = ""
56
+ num = 0
57
+ rows[3..rows.size-1].each_with_index do |f, i|
58
+ cells = f.find_elements(:css, "td").map { |a| a.text.strip.gsub(",", "") }
59
+ value = i if cells[1] == code and cells[3] == "東証"
60
+ num += 1
61
+ end
62
+ while value == ""
63
+ driver.find_element(xpath: "//*[@id='str-main-inner']/table/tbody/tr/td/table/tbody/tr/td/form/ul/li[2]/a").click
64
+ rows = driver.find_elements(xpath: "//tr")
65
+ rows[3..rows.size-1].each_with_index do |f, i|
66
+ cells = f.find_elements(:css, "td").map { |a| a.text.strip.gsub(",", "") }
67
+ value = i + num - 1 if cells[1] == code and cells[3] == "東証"
68
+ end
69
+ end
70
+ driver.find_element(xpath: "//*[@id='#{value}']").click
71
+ sleep 2
72
+ driver.find_element(xpath: "//*[@id='str-main-inner']/table/tbody/tr/td/table/tbody/tr/td/form/div[3]/ul/li/a/img").click
73
+ begin
74
+ return "already exist" if driver.find_element(xpath: "//*[@id='err_msg']").text.include? "すでに登録済みの銘柄が含まれています。"
75
+ rescue
76
+ end
77
+ driver
78
+ end
79
+
14
80
  def todays_order
15
81
  driver = get_selenium_driver(:chrome)
16
82
  wait = Selenium::WebDriver::Wait.new(timeout: 100)
@@ -35,7 +101,7 @@ module RakutenSecuritiesScraper
35
101
  sleep 2
36
102
  tables = driver.find_elements(xpath: "//tr")
37
103
  page_num = driver.find_element(class_name: "mtext").text.scan(/(.+)件中/)[0][0].to_i
38
- row_nums = (21..(21 + (page_num * 3) -1)).to_a
104
+ row_nums = (21..(21 + (page_num * 3) - 1)).to_a
39
105
  records = []
40
106
  row_nums.each_slice(3).to_a.map do |col_num|
41
107
  detail = {}
@@ -128,7 +194,7 @@ module RakutenSecuritiesScraper
128
194
  def trade_table_data driver, page_num
129
195
  run_times = page_num.divmod(20)
130
196
  trade_records = []
131
- (1..run_times[0]-1).each do |f|
197
+ (1..run_times[0] - 1).each do |f|
132
198
  rows = driver.find_elements(xpath: "//tr")
133
199
  rows[10..29].map do |row|
134
200
  cells = row.find_elements(:css, "td").map { |a| a.text.strip.gsub(",", "") }
@@ -163,7 +229,7 @@ module RakutenSecuritiesScraper
163
229
  return trade_records
164
230
  end
165
231
  rows = driver.find_elements(xpath: "//tr")
166
- rows[10.."1#{run_times[1]}".to_i-1].map do |row|
232
+ rows[10.."1#{run_times[1]}".to_i - 1].map do |row|
167
233
  cells = row.find_elements(:css, "td").map { |a| a.text.strip.gsub(",", "") }
168
234
  trade_records << {
169
235
  bit_date: cells[0].split("\n")[0],
@@ -1,3 +1,3 @@
1
1
  module RakutenSecuritiesScraper
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -23,4 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.bindir = "exe"
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
+ spec.add_development_dependency "bundler", "~> 2.0"
27
+ spec.add_development_dependency "rake", ">= 12.3.3"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
+ spec.add_runtime_dependency "selenium-webdriver", "~> 3.142.7"
26
30
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakuten_securities_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - FUMI-POPPIN
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-06-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 12.3.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 12.3.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: selenium-webdriver
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.142.7
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.142.7
13
69
  description: This gem is providing scraper methods for everyone to be able to make
14
70
  stock trading applications without writing scraper codes.
15
71
  email: