【问题标题】:How to parse a web page using Nokogiri in Ruby?如何在 Ruby 中使用 Nokogiri 解析网页?
【发布时间】:2013-04-02 17:12:54
【问题描述】:

我正在使用 Nokogiri 来解析 html。对于显示的网站,我正在尝试创建一个哈希数组,其中每个哈希将包含网站上显示的给定评论的优点、缺点和建议部分。我在这样做时遇到了麻烦,并希望在这里得到一些建议。当我返回某个元素时,我没有得到网站上显示的正确内容。有任何想法吗?

require 'open-uri'
require 'nokogiri'

# Perform a google search
doc = Nokogiri::HTML(open('http://www.glassdoor.com/Reviews/Microsoft-Reviews-E1651.htm'))

reviews = []


current_review = Hash.new

doc.css('.employerReview').each do |item|
    pro = item.parent.css('p:nth-child(1) .notranslate').text
    con = item.parent.css('p:nth-child(2) .notranslate').text
    advice = item.parent.css('p:nth-child(3) .notranslate').text

    current_review = {'pro' => pro, 'con' => con, 'advice' => advice}

    reviews << current_review
end

【问题讨论】:

    标签: ruby html-parsing nokogiri


    【解决方案1】:

    试试这个:

    reviews = []
    doc.css('.employerReview').each do |item|
      pro, con, advice = item.css('.description .notranslate text()').map(&:to_s)
      reviews << {'pro' => pro, 'con' => con, 'advice' => advice}
    end
    

    ruby 也更喜欢使用符号键,所以除非你需要它们是字符串,否则我会这样做

    reviews << { pro: pro, con: con, advice: advice }
    

    【讨论】:

    • 当我发表评论[0]['pros'] 时,它不会返回网站上显示的全文。我认为这是由于 css 选择器,这是我想要弄清楚的。
    • 第一个是'pro' 而不是'pros',第二个对我有用:Very little bureaucracy for such a large organization. Generally tends toward moving fast with limited planning.
    • 我的意思是专业人士,这就是我的代码中的内容。这很奇怪,这不是我在页面上第一个专业条目看到的文字......
    • 啊,它刚刚改变了。也许刷新,因为您可能正在检查旧页面
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2016-01-05
    • 1970-01-01
    • 2013-01-05
    • 2012-07-05
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多