Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def fetch_posts
- params = OpenStruct.new(params)
- url = params.url
- limit = params.limit
- browser = params.browser
- dlog 'Переходим по адресу: %s'%[url]
- browser.goto url
- Watir::Wait.until{ browser.a(class: "toolbar_logo").present? }
- fetch_time = Time.now
- dlog 'Собираем ссылки на посты...'
- if url =~ /https:\/\/ok.ru\/profile\/\d+\/statuses/
- recieve_posts_urls(limit, posts = :note_posts)
- elsif url =~ /https:\/\/ok.ru\/profile\/\d+/
- recieve_posts_urls(limit, posts = :feed_posts)
- end
- end
- def recieve_posts_urls(limit, posts)
- urls = []
- while limit > posts.count
- posts_before = posts
- scroll_down
- posts_after = posts
- if posts_before.count == posts_after.count
- limit = posts_after.count
- end
- end
- posts_after[0..(limit-1)].each do |post|
- if post.a(class: "media_more_a").exist?
- urls << post.a(class: "media_more_a").href
- elsif post.a(class: "media-text_a").present?
- urls << post.a(class: "media-text_a").href
- end
- end
- return urls
- end
- def scroll_down
- dlog 'Прокручиваем страницу, чтобы отобразилось нужное кол-во постов'
- browser.send_keys :end
- sleep 1 + rand(2)
- if browser.a(class: "link-show-more").present?
- browser.a(class: "link-show-more").click
- end
- end
- def note_posts
- posts = browser.element(class: "media_feed").elements(class: "feed")
- end
- def feed_posts
- posts = browser.element(class: "user-feed").elements(class: "feed-w")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement