如何用Ruby on Rails获取特定网站的所有页面



我目前正在使用Ruby on Rails (Ruby:2.2.1, Rails:4.2.1)建立一个网站,并希望从特定网站提取数据,然后显示它。我使用Nokogiri获取网页的内容。我要找的是取本网站的所有页面,并得到他们的内容。

我的代码下面:

doc = Nokogiri::HTML(open("www.google.com").read)
puts doc.at_css('title').text
puts doc.to_html

这是你需要的一个非常近似的要点:

class Parser
  attr_accessor :pages
  def fetch_all(host)
    @host = host
    fetch(@host)
  end
  private
  def fetch(url)
    return if pages.any? { |page| page.url == url }
    parse_page(Nokogiri::HTML(open(url).read))
  end
  def parse_page(document)
    links = extract_links(document)
    pages << Page.new(
      url: url,
      title: document.at_css('title').text,
      content: document.to_html,
      links: links
    )
    links.each { |link| fetch(@host + link) }
  end
  def extract_links(document)
    document.css('a').map do |link|
      href = link['href'].gsub(@host, '')
      href if href.start_with?('/')
    end.compact.uniq
  end
end
class Page
  attr_accessor :url, :title, :html_content, :links
  def initialize(url:, title:, html_content:, links:)
    @url = url
    @title = title
    @html_content = html_content
    @links = links
  end
end

相关内容

  • 没有找到相关文章

最新更新