Class: Seotracker

Inherits:
Object
  • Object
show all
Defined in:
lib/seotracker.rb

Direct Known Subclasses

Google, Yandex

Defined Under Namespace

Classes: Google, Yandex

Constant Summary collapse

USER_AGENT =
'Mac Safari'
RESULTS =
10

Instance Method Summary collapse

Constructor Details

#initializeSeotracker

Returns a new instance of Seotracker.



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/seotracker.rb', line 10

def initialize
  @agent = Mechanize.new
  @agent.user_agent_alias = Seotracker::USER_AGENT
  @agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  @agent.agent.http.retry_change_requests = true

  @debug = true

  if @debug
    @log = Logger.new('log.txt')
    #@agent.log = @log если надо логировать mechnize
  end
end

Instance Method Details

#debug(message) ⇒ Object



52
53
54
# File 'lib/seotracker.rb', line 52

def debug(message)
  @log.debug(message) if @debug
end

#get_position(site, word, region = Seotracker::Yandex::MOSCOW, pages = 200) ⇒ Object

получаем позиции получаем массив ссылок от парсера увеличиваем счетчик позиций, пока не найдем нужную ссылку 4 ссылки храним в массиве “последних”, чтобы не считать случайно выдранные парсером повторения



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/seotracker.rb', line 28

def get_position(site, word, region = Seotracker::Yandex::MOSCOW, pages = 200)
  pos, found, start, hrefs = 0, false, 0, []
  while (start < pages) && !found
    links = parse(word, start, region)
    start += RESULTS

    break if links == 'error'
    links.each do |l|
      href = get_link(l)
      next if href == '' || hrefs.include?(href)

      # храним 4 последние полученные ссылки
      hrefs = hrefs.pop(3)
      hrefs << href
      pos += 1
      if href.rindex(site) && same_level(href, site)
        found = true
        break
      end
    end
  end
  found ? pos : 0
end