Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.36 KB | None | 0 0
  1. require 'rubygems'
  2. require 'mechanize'
  3. require 'uri'
  4. require 'nokogiri'
  5.  
  6.  
  7. def get_group_posts(group_id,limit)
  8.     client = Mechanize.new
  9.  
  10.     url_grp = URI::HTTPS.build(host: 'ok.ru',path: "/group#{group_id}")
  11.     body = client.get(url_grp).body
  12.     body =~ /st.markerb="(.+?)"/i
  13.     markerB = $1
  14.     body =~ /gwtHash:"(.+?)"/i
  15.     gwt_requested = $1
  16.  
  17.     html_requests_page = Nokogiri::HTML.fragment(body)
  18.     puts "1 feed page(#{markerB})"
  19.     puts html_requests_page.search(".feed-w").count
  20.  
  21.     start_page = 2
  22.  
  23.     url = URI::HTTPS.build(host: 'ok.ru',path: '/dk', query: URI.encode_www_form(
  24.       'cmd': 'AltGroupMainFeedsNewRB',
  25.       'st.gid': group_id
  26.     ))
  27.     out = []
  28.  
  29.     while markerB && out.count < limit do
  30.         puts "#{start_page} feed page(#{markerB})"
  31.         content = client.post(url,{
  32.             'fetch': false,
  33.             'st.page': start_page,
  34.             'st.markerB': markerB,
  35.             'gwt.requested': gwt_requested
  36.         }).body
  37.         content =~ /st.markerb="(.+?)"/i
  38.         markerB = $1
  39.         ajax_requested_page = Nokogiri::HTML.fragment(content)
  40.  
  41.         posts = ajax_requested_page.search(".feed-w") #это прост для примера
  42.  
  43.         out += posts
  44.  
  45.         start_page += 1
  46.        
  47.     end
  48.    
  49.     #вот туть надо сделать чтобы если на странице больше постов чем надо до лимита последнии из out выпиливать
  50.     out
  51. end
  52.  
  53. get_group_posts('53485850722549',100)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement