2012-02-07 3 views
0

나는 다음과 같은 코드가 있습니다출력을 여러 번

  1. 코드는 한 번 세 번을 출력하지 :

    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 
    

    나는 두 가지 문제가 있습니다.

  2. 독일의 "움라우트"는 äü입니다.

답변

0

원본 HTML은 길지만 들여 쓰기가 없으므로 디버깅하기가 매우 어렵습니다.

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

으로 :

는하지만 바꿀 필요가 있다고 생각

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

//body/div 내부 <div>//body/div을 포함하고 별도로 포함 있도록 모든 <div> 요소가 포함 된 첫 번째

움라우트 문자에 아무런 문제가 없었습니다.를 사용했습니다.,하지만 파일에 쓰는 데 문제가있었습니다. 당신의 정확한 문제는 무엇입니까? 움라우트 문제에 대해 스택 오버플로에 대한 새로운 질문을 만드는 것이 가장 좋습니다.