Module: Tushare::Stock::NewsEvent

Extended by:
Util
Defined in:
lib/tushare/stock/news_event.rb

Overview

新闻事件数据接口

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Util

_code_to_symbol, _write_console, _write_head, check_quarter, check_year, fetch_ftp_file, holiday?, trade_cal

Class Method Details

._guba_content(url) ⇒ Object



141
142
143
144
145
146
147
148
# File 'lib/tushare/stock/news_event.rb', line 141

def _guba_content(url)
  doc = Nokogiri::HTML(open(url), nil, 'gbk')
  content = doc.css('div.ilt_p p').text
  ptime = doc.css('div.fl_left.iltp_time span').text
  rcounts_text = doc.css('div.fl_right.iltp_span span').text
  rcounts = rcounts_text.gsub(/\D/, '')
  { content: content, ptime: ptime, rcounts: rcounts }
end

._random(n = 16) ⇒ Object



163
164
165
166
167
# File 'lib/tushare/stock/news_event.rb', line 163

def _random(n = 16)
  start_point = 10 ** (n - 1)
  end_point = (10 ** n) - 1
  rand(start_point..end_point).to_s
end

.guba_sina(show_content = false) ⇒ Object

Return


DataFrame

title, 

20170504bug修复修复获取股吧数据的时候的报错问题

1. 


109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/tushare/stock/news_event.rb', line 109

def guba_sina(show_content = false)
  url = format(GUBA_SINA_URL, P_TYPE['http'], DOMAINS['sina'])
  doc = Nokogiri::HTML(open(url), nil, 'gbk')
  res = doc.css('ul.list_05 li')
  heads = doc.css('div.tit_04')
  result = []
  heads.each do |head|
    object = {}
    link = head.css('a').first
    object[:title] = link.content
    object[:url] = link.attr('href')
    #object.merge!(_guba_content(object[:url]))
    object.delete(:content) unless  show_content
    result << object
  end
  res.each do |row|
    object = {}
    unless row.css('a').length<2
      link = row.css('a')[1]
      object[:title] = link.text
      object[:url] = link.attr('href')
      object.merge!(_guba_content(object[:url]))
      object.delete(:content) unless  show_content
      result << object
    end
  end

  result
end

.latest_content(url) ⇒ Object

Return


string:


158
159
160
161
# File 'lib/tushare/stock/news_event.rb', line 158

def latest_content(url)
  doc = Nokogiri::HTML(open(url))
  doc.css('div#artibody p').text
end

.latest_news(top = PAGE_NUM[2], show_content = false) ⇒ Object

Return


DataFrame
    classify :


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/tushare/stock/news_event.rb', line 24

def latest_news(top = PAGE_NUM[2], show_content = false)
  url = format(LATEST_URL, P_TYPE['http'], DOMAINS['sina'],
               PAGES['lnews'], top, _random)
  resp = HTTParty.get(url)
  events = eval(resp.body.encode('utf-8', 'gbk').sub('var ', '')
                    .delete(' '))[:list]
  result = []
  events.each do |event|
    object = {}
    object['classify'] = event[:channel][:title]
    object['title'] = event[:title]
    object['url'] = event[:url]
    object['time'] = Time.at(event[:time]).strftime('%m-%d %H:%M')
    object['content'] = latest_content(object['url']) if show_content
    result << object
  end
  result
end

.notices(code, date = nil) ⇒ Object

Return


DataFrame


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/tushare/stock/news_event.rb', line 56

def notices(code, date = nil)
  return nil if code.nil?
  symbol = code[0] == '6' ? "sh#{code}" : "sz#{code}"
  url = format(NOTICE_INFO_URL, P_TYPE['http'], DOMAINS['vsf'],
               PAGES['ntinfo'], symbol)
  url = "#{url}&gg_date=#{date}" if date
  doc = Nokogiri::HTML(open(url), nil, 'gbk')
  rows = doc.css('table.body_table tbody tr')
  result = []
  rows.each do |row|
    object = {}
    a = row.css('th a')[0]
    tds = row.css('td')
    object['title'] = a.content
    object['type'] = tds[0].content
    object['date'] = tds[1].content
    object['url'] = "#{P_TYPE['http']}#{DOMAINS['vsf']}#{a.attr('href')}"
    result << object
  end
  result
end

Instance Method Details

#notice_content(url) ⇒ Object

Return


string:


86
87
88
89
# File 'lib/tushare/stock/news_event.rb', line 86

def notice_content(url)
  doc = Nokogiri::HTML(open(url))
  doc.css('div#content pre')[0].content.strip
end