2013-04-10 3 views
0

Я использую Nokogiri для разбора html. Для показанного веб-сайта я пытаюсь создать массив хэшей, где каждый хеш будет содержать разделы «за», «против» и «советы» для данного обзора, показанного на сайте. У меня возникли проблемы с этим, и я надеялся на некоторые советы здесь. Когда я возвращаю определенный элемент, я не получаю нужный контент, показанный на сайте. Есть идеи?Как анализировать веб-страницу с помощью Nokogiri в Ruby?

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 

ответ

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 

Это также предпочтительно с рубином использовать клавиши символов, поэтому, если они вам не нужны, чтобы быть строками, я бы

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

Когда у меня есть puts reviews [0] ['pros'], он не возвращает полный текст, как видно на сайте. Я думаю, что это связано с селектором css, и это то, что я пытаюсь понять. – sharataka

+0

1-й его «про», а не «профи», второй для меня: «Очень маленькая бюрократия для такой крупной организации. Обычно имеет тенденцию к быстрому движению с ограниченным планированием. « – AJcodez

+0

Я имел в виду про, это то, что у меня есть в моем коде. И это странно, это не тот текст, который я вижу для первой записи pro на странице ... – sharataka

Смежные вопросы