Advertisement
Guest User

Untitled

a guest
Feb 12th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.73 KB | None | 0 0
  1. def fetch_posts
  2.     params = OpenStruct.new(params)
  3.     url = params.url
  4.     limit = params.limit
  5.     browser = params.browser  
  6.  
  7.     dlog 'Переходим по адресу: %s'%[url]
  8.     browser.goto url
  9.  
  10.     Watir::Wait.until{ browser.a(class: "toolbar_logo").present? }
  11.      
  12.     fetch_time = Time.now
  13.  
  14.     dlog 'Собираем ссылки на посты...'
  15.    
  16.     if url =~ /https:\/\/ok.ru\/profile\/\d+\/statuses/
  17.       recieve_posts_urls(limit, posts = :note_posts)
  18.     elsif url =~ /https:\/\/ok.ru\/profile\/\d+/
  19.       recieve_posts_urls(limit, posts = :feed_posts)
  20.     end
  21.   end
  22.  
  23.   def recieve_posts_urls(limit, posts)
  24.     urls = []    
  25.     while limit > posts.count
  26.       posts_before = posts
  27.       scroll_down
  28.       posts_after = posts
  29.       if posts_before.count == posts_after.count
  30.         limit = posts_after.count
  31.       end
  32.     end      
  33.     posts_after[0..(limit-1)].each do |post|            
  34.       if post.a(class: "media_more_a").exist?
  35.         urls << post.a(class: "media_more_a").href
  36.       elsif post.a(class: "media-text_a").present?  
  37.         urls << post.a(class: "media-text_a").href        
  38.       end
  39.     end    
  40.     return urls
  41.   end
  42.  
  43.  
  44.  
  45.   def scroll_down  
  46.     dlog 'Прокручиваем страницу, чтобы отобразилось нужное кол-во постов'
  47.     browser.send_keys :end
  48.     sleep 1 + rand(2)      
  49.     if browser.a(class: "link-show-more").present?
  50.       browser.a(class: "link-show-more").click                    
  51.     end  
  52.   end
  53.  
  54.   def note_posts
  55.     posts = browser.element(class: "media_feed").elements(class: "feed")
  56.   end
  57.  
  58.   def feed_posts
  59.     posts = browser.element(class: "user-feed").elements(class: "feed-w")
  60.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement