Добавление определенного URL в BASE PATH для очистки веб-страницы с помощью Nokogiri - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в ruby ​​и на этом сайте, поэтому, пожалуйста, потерпите меня!Я бесконечно гуглил безрезультатно.

Я пытаюсь передать объект college в мой метод класса scrape_college_info, который я создал в предыдущем методе класса scrape_illinois_index_page, чтобы я мог очиститьСледующий уровень информации для конкретного колледжа пользователь выбирает с помощью Pry и Nokogiri.К сожалению, я продолжаю получать ошибку аргумента.

Я знаю, что это не самая красивая, но это мой код прямо сейчас:

    class College
  attr_accessor :name, :location, :size, :type, :url
  BASE_PATH = "https://www.collegesimply.com/colleges/illinois/"

  def self.college
    self.scrape_colleges
  end

  def self.scrape_colleges
    colleges = self.scrape_illinois_index_page

    colleges
  end

  def self.scrape_illinois_index_page
    doc = Nokogiri::HTML(open(BASE_PATH))

    # binding.pry

    colleges = []

    doc.xpath("//tr").each do |doc|
      college = self.new
      if doc.css("td")[0] != nil
        college.name = doc.css("td")[0].text.strip
      end

      if doc.css("td")[1] != nil
        college.location = doc.css("td")[1].text.strip
      end

      if doc.css('table.table tbody tr td:nth-child(1) a')[0] != nil
        college.link = doc.css('table.table tbody tr td:nth-child(1) a')[0]['href']
      end
      colleges << college
    end
    colleges
  end

  def self.scrape_college_info(college)
    doc = Nokogiri::HTML(open(BASE_PATH + "#{college.link}"))
  end
end

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Попробуйте использовать URI.join:

new_url = URI.join(BASE_PATH, college.link).to_s
0 голосов
/ 24 октября 2018

Попробуйте следующий код, чтобы получить college.link.

if doc.css("td")[0] != nil
   college.name = doc.css("td")[0].text.strip
   college.link = doc.css("td")[0].css("a").map{|a| a['href']}[0]
end

Теперь вы можете передать ссылку на колледж, например:

def self.scrape_college_info(college)
  doc = Nokogiri::HTML(open("https://www.collegesimply.com" + "#{college.link}"))
end

Надеюсь, это решит вашу проблему.Пожалуйста, дайте мне знать, если это работает для вас.

...