teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

文法の修正

2015/02/11 13:58

投稿

Shinog
Shinog

スコア99

title CHANGED
File without changes
body CHANGED
@@ -1,71 +1,5 @@
1
1
  はじめまして!!
2
2
  現在、クローラを用いてヤフーファイナンスから全銘柄の基本情報(株価、PER,PBRなど)を取得しようと考えています。
3
- 以下のコード(言語Ruby)で、4689(ヤフー)の基本情報を取得することは出来たのですが、この先からどう展開していけばよいでしょうか??
3
+ どう展開していけばよいでしょうか??
4
4
 
5
- ご教授のほど、よろしくお願いしますm(_ _)m
5
+ ご教授のほど、よろしくお願いしますm(_ _)m
6
-
7
- # -*- coding: utf-8 -*-
8
- require 'nokogiri'
9
- require 'open-uri'
10
-
11
- class CompanyInfo
12
- def initialize(ticker_code)
13
- @baseUrl = "http://stocks.finance.yahoo.co.jp/stocks"
14
- @tickerCode = ticker_code
15
- scrape
16
- end
17
- attr_reader :name, :tickerCode, :category,
18
- :unit, :recentHighPrice, :recentLowPrice,
19
- :highPrice, :lowPrice, :price, :PER, :PBR
20
-
21
- private
22
- def scrape_stock_info(html, index)
23
- get_content(html, "dd", "ymuiEditLink mar0", index, "/strong").delete(",")
24
- end
25
-
26
- def get_company_info()
27
- url = "#{@baseUrl}/profile/?code=#{@tickerCode}"
28
- doc = get_nokogiri_doc(url)
29
- @name = doc.xpath("//th[@class='symbol']/h1").text
30
- @category = doc.xpath("//table[@class='boardFinCom marB6']/tr[6]/td").text
31
- @unit = doc.xpath("//table[@class='boardFinCom marB6']/tr[13]/td").text
32
- end
33
-
34
- def get_stock_info()
35
- url = "#{@baseUrl}/detail/?code=#{@tickerCode}"
36
- doc = get_nokogiri_doc(url)
37
- @PER = doc.xpath("//div[@class='chartFinance']/div[5]/dl/dd[@class='ymuiEditLink mar0']/strong").text
38
- @PBR = doc.xpath("//div[@class='chartFinance']/div[6]/dl/dd[@class='ymuiEditLink mar0']/strong").text
39
- @recentHighPrice = doc.xpath("//div[11]/dl/dd[@class='ymuiEditLink mar0']/strong").text
40
- @recentLowPrice = doc.xpath("//div[12]/dl/dd[@class='ymuiEditLink mar0']/strong").text
41
- @highPrice = doc.xpath("//div[@class='innerDate']/div[3]/dl/dd[@class='ymuiEditLink mar0']/strong").text
42
- @lowPrice = doc.xpath("//div[@class='innerDate']/div[4]/dl/dd[@class='ymuiEditLink mar0']/strong").text
43
- @price = doc.xpath("//td[@class='stoksPrice']").text
44
- end
45
-
46
- def get_nokogiri_doc(url)
47
- begin
48
- html = open(url)
49
- rescue OpenURI::HTTPError
50
- return
51
- end
52
- Nokogiri::HTML(html.read, nil, 'utf-8')
53
- end
54
-
55
- def scrape
56
- get_company_info
57
- get_stock_info
58
- end
59
- end
60
-
61
- company = CompanyInfo.new("4689")
62
- puts company.name
63
- puts company.category
64
- puts company.unit
65
- puts "PER:"+company.PER
66
- puts "PBR:"+company.PBR
67
- puts "年初来高値:"+company.recentHighPrice
68
- puts "年初来安値:"+company.recentLowPrice
69
- puts "高値:"+company.highPrice
70
- puts "安値:"+company.lowPrice
71
- puts "株価:"+company.price