Module: AmazonReview

Defined in:
lib/amazon-review.rb,
lib/amazon-review/review.rb

Defined Under Namespace

Classes: Review

Class Method Summary collapse

Class Method Details

.find_reviews(asin) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/amazon-review.rb', line 6

def self.find_reviews(asin)
  reviews = []
  delay = 0.5
  page = 1
  
  # iterate through the pages of reviews

  begin
    url = "http://www.amazon.com/product-reviews/#{asin}/?ie=UTF8&showViewpoints=0&pageNumber=#{page}&sortBy=bySubmissionDateAscending"
    doc = Nokogiri::HTML(open(url))
    
    # parse each review
    new_reviews = 0
    doc.css("#productReviews td > a[name]").each do |review_html|
      reviews << Review.new(review_html)
      new_reviews += 1
    end       
    # go to next page
    page += 1
    
    # delay to prevent 503 errors
    delay = [0, delay - 0.1].max # decrease delay
    sleep delay
    
  rescue Exception => e # error while parsing (likely a 503)      
    delay += 0.5 # increase delay
  
  end until new_reviews == 0
  
  reviews  
end