2012-02-07 48 views
0

我有以下代碼:輸出幾次

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

time = Time.new 

url = "http://mobile.bahn.de/bin/mobil/bhftafel.exe/dox?input=Richard-Strauss-Stra%DFe%2C+M%FCnchen%23625127&date=" + 
    time.strftime("%d%m%Y") + 
    "&time=" + 
    time.strftime("%H") + 
    "%3A" + 
    time.strftime("%M") + 
    "&productsFilter=1111111111000000&REQTrain_name=&maxJourneys=10&start=Suchen&boardType=Abfahrt&ao=yes" 

doc = Nokogiri::HTML(open(url)) 
doc.xpath('//div//p').remove 
doc.encoding = 'UTF-8' 
doc = doc.xpath('//div').each do |node| 
    text = node.text.gsub(/\n([ \t]*\n)+/,"\n",).gsub(/^\s+|\s+$/,'').gsub("Startseite", '').gsub("Impressum", '') 
    puts text unless text.empty? 
end 

我有兩個問題:

  1. 代碼輸出三次而不是一個時間。
  2. 德國「變音符號」,如äü

回答

0

原始的HTML很長,而且沒有縮進,所以很難調試。

但我認爲你需要更換:

doc = doc.xpath('//div').each do |node| 

有了:

doc = doc.xpath('//body/div').each do |node| 

第一個也包括所有<div>元素,因此它包括了//body/div,然後分別包括<div>的內線//body/div

我對變音符號沒有任何問題,使用puts,但確實遇到了將它們寫入文件的問題。你確切的問題是什麼?如果你在Stack Overflow上爲umlauts問題創建一個新問題,可能是最好的。