2016-06-19 11 views
-2

ノコギリを使用してサイトから情報を削り取ろうとしています。ノコギリで全ページの代わりに特定のアイテムにアクセスする方法

サイトでは、次のようになります。

<div class="content"> 
    <article class="mainarticle"> 
    <div class="breadcrump"> 
     <ul></ul> 
    </div> 
    <div class="boxstyle"> 
     <h2 style="margin-top:0.1em;">Fahrschulen mit Namen "Hugis Fahrschule AG"</h2> 
    </div> 
    <section class="leftrightleft "> 
     <header> 
     <div class="borderright borderbottom pads"> 
      <figure class="logoschule"> 
      <a href="fahrlehrerbilder.php?irat_id=14581" onclick="showGallery('irat_gallery',14581);return false;"> 
       <img alt="Bilder Hugis Fahrschule AG" width="110" height="110" src="http://www.fahrlehrervergleich.ch/images/lehrer/small/fe1774780ba2d3aaa3e985ee960bf8.jpg"> 
       <figcaption class="gallerylabel minhide">1 Bild</figcaption> 
      </a> 
      </figure> 
      <div> 
      <h3><a href="http://www.fahrlehrervergleich.ch/fahrschule-Hugis-Fahrschule-AG-Z%C3%BCrich-fahrschule-14581.htm" target="_self" title="Hugis Fahrschule AG">Hugis Fahrschule AG</a></h3> 
      <h4 style="padding:0;line-height:1.3em;">Thomas Hugelshofer</h4> 
      <span class="biger">Thomas Hugelshofer</span> 
      <p><span>Oerlikon</span><br><span>Schaffhauserstrasse 443</span><br><span>8050</span> <span>Zürich</span></p> 
      <p><a href="karte.php?i=14581" target="_blank" onclick="showMap(14581);return false;">Karte</a> &nbsp;<a href="streetview.php?i=14581" target="_blank" onclick="showStreetview(14581);return false;">Streetview</a> &nbsp;</p> 
      <p></p> 
      </div> 
      <table class="eintraegemain clearfix"> 
      <tbody> 
       <tr> 
       <td>Homepage:</td> 
       <td><a href="fahrlehrervergleich.php?web=14581" target="_blank"><span>www.hugis-fahrschule.ch</span></a></td> 
       </tr> 
       <tr> 
       <td>E-Mail:</td> 
       <td><a class="" href="kontakt_user.php?kontakt_id=14581" target="_blank" onclick="showEmailSender(14581);return false;">[email protected]</a></td> 
       </tr> 
       <tr> 
       <td>Natel:</td> 
       <td><span>076 684 11 11</span></td> 
       </tr> 
      </tbody> 
      </table> 
     </div> 
     </header> 
     <div class="accordion"> 
     <div class="accordion-section"> 
      <a class="accordion-section-title accordeonfarbe-00" href="#accordion-1-14581"><span class="arrow"></span>Preise für Auto: ab 74.-, Auto Automat: ab 74.-, Motorrad: 90...</a> 
      <section id="accordion-1-14581" class="secondright accordion-section-content"> 
      <div class="borderleft pads"> 
       <table> 
       <tbody> 
        <tr> 
        <td>Kategorien</td> 
        <td>Preise CHF</td> 
        </tr> 
        <tr> 
        <td>Auto:</td> 
        <td>ab 74.-</td> 
        </tr> 
        <tr> 
        <td>Auto&nbsp;Automat:</td> 
        <td>ab 74.-</td> 
        </tr> 
        <tr> 
        <td>Motorrad:</td> 
        <td>90.-</td> 
        </tr> 
        <tr> 
        <td>Taxi:</td> 
        <td>74.-</td> 
        </tr> 
        <tr> 
        <td>Lastwagen:</td> 
        <td>165 .-</td> 
        </tr> 
        <tr> 
        <td>Lastwagen&nbsp;C1:</td> 
        <td>165.-</td> 
        </tr> 
        <tr> 
        <td>Auto&nbsp;Anhänger:</td> 
        <td>112.-</td> 
        </tr> 
        <tr> 
        <td>LKW&nbsp;Anhänger:</td> 
        <td>195.-</td> 
        </tr> 
        <tr> 
        <td>Car:</td> 
        <td>195.-</td> 
        </tr> 
        <tr> 
        <td style="font-weight:normal;">Lektionsdauer:</td> 
        <td style="font-weight:normal;">45 Minuten</td> 
        </tr> 
       </tbody> 
       </table> 
       <table> 
       <tbody> 
        <tr> 
        <td>Kurse</td> 
        <td>Preise CHF</td> 
        </tr> 
        <tr> 
        <td>Verkehrskunde:</td> 
        <td>150.-</td> 
        </tr> 
        <tr> 
        <td>Nothelferkurs:</td> 
        <td>120.-</td> 
        </tr> 
        <tr> 
        <td>Motorrad&nbsp;Grundkurs:</td> 
        <td>160 pro Teil</td> 
        </tr> 
        <tr> 
        <td>Theorie:</td> 
        <td>Nach Anmeldung</td> 
        </tr> 
       </tbody> 
       </table> 
      </div> 
      </section> 
     </div> 
     <div class="accordion-section"> 
      <a class="accordion-section-title accordeonfarbe-00" href="#accordion-2-14581"><span class="arrow"></span>Weitere Informationen: Sprachen: Deutsch, Englisch...</a> 
      <section id="accordion-2-14581" class="thirdleft accordion-section-content"> 
      <div class="borderright pads"> 
       <table id="sb_14581"> 
       <tbody> 
        <tr> 
        <td>Sprachen: </td> 
        <td>Deutsch, Englisch, Serbisch, Albanisch, Türkisch, Polnisch, Italienisch</td> 
        </tr> 
        <tr> 
        <td>Autotyp:</td> 
        <td>Renauld Megan</td> 
        </tr> 
        <tr> 
        <td>Administration:</td> 
        <td>CHF 110.- (pauschal)</td> 
        </tr> 
        <tr> 
        <td>Jahrgang:</td> 
        <td>2015</td> 
        </tr> 
        <tr> 
        <td>Ausbildungsjahr:</td> 
        <td>2015</td> 
        </tr> 
       </tbody> 
       <tbody></tbody> 
       </table> 
      </div> 
      </section> 
     </div> 
     <footer class="clearfix"> 
      <section> 
      <div class="bordertop pads" id="sbwl_14581"> 
       <div class="ratingoutside"> 
       <ul class="rating"> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li><a href="bewertungen.php?irat=14581" onclick="showBewe(14581);return false;" title="12 Bewertungen anschauen" style="text-decoration:none;">(12)</a></li> 
       </ul> 
       </div> 
       <div class="rightbuts"><a class="buttonsmall" href="bewertungen.php?irat=14581" onclick="showBewe(14581);return false;" title="Bewertungen anschauen">Bewertungen anschauen</a> 
       <a class="buttonsmall" href="lernen/index.php?bewe_irat=14581">Fahrlehrer bewerten</a> 
       </div> 
       <p class="clicks minhide clearfix"> 30-Tage-Statistik : Inserat <span class="num_imp">14069</span> Mal angezeigt, Homepage <span class="num_click">228</span> Mal angeklickt. (<a href="sponsored.php" target="_blank" onclick="loadSponsored();return false;">sponsored</a>)</p> 
      </div> 
      </section> 
     </footer> 
     </div> 
    </section> 
    <section class="leftrightleft "> 
     <header> 
     <div class="borderright borderbottom pads"> 
      <div> 
      <h3><a href="http://www.fahrlehrervergleich.ch/fahrschule-Hugis-Fahrschule-AG-Adlikon+b.+Regensdorf-fahrschule-13695.htm" target="_self" title="Hugis Fahrschule AG">Hugis Fahrschule AG</a></h3> 
      <h4 style="padding:0;line-height:1.3em;">Thomas Hugelshofer</h4> 
      <span class="biger">Thomas Hugelshofer</span> 
      <p><span>8106</span> <span>Adlikon b. Regensdorf</span></p> 
      </div> 
      <table class="eintraegemain clearfix"> 
      <tbody></tbody> 
      </table> 
     </div> 
     </header> 
     <div class="accordion"> 
     <div class="accordion-section"> 
      <a class="accordion-section-title accordeonfarbe-00" href="#accordion-1-13695"><span class="arrow"></span>Preise für Auto: 84.-, Motorrad: 90.-, Taxi: 95.-, Lastwagen:...</a> 
      <section id="accordion-1-13695" class="secondright accordion-section-content"> 
      <div class="borderleft pads"> 
       <table> 
       <tbody> 
        <tr> 
        <td>Kategorien</td> 
        <td>Preise CHF</td> 
        </tr> 
        <tr> 
        <td>Auto:</td> 
        <td>84.-</td> 
        </tr> 
        <tr> 
        <td>Motorrad:</td> 
        <td>90.-</td> 
        </tr> 
        <tr> 
        <td>Taxi:</td> 
        <td>95.-</td> 
        </tr> 
        <tr> 
        <td>Lastwagen:</td> 
        <td>165.-</td> 
        </tr> 
        <tr> 
        <td>Lastwagen&nbsp;C1:</td> 
        <td>165.-</td> 
        </tr> 
        <tr> 
        <td>Auto&nbsp;Anhänger:</td> 
        <td>112.-</td> 
        </tr> 
        <tr> 
        <td>LKW&nbsp;Anhänger:</td> 
        <td>195.-</td> 
        </tr> 
        <tr> 
        <td>Car:</td> 
        <td>195.-</td> 
        </tr> 
       </tbody> 
       </table> 
       <table> 
       <tbody> 
        <tr> 
        <td>Kurse</td> 
        <td>Preise CHF</td> 
        </tr> 
        <tr> 
        <td>Verkehrskunde:</td> 
        <td>150.-</td> 
        </tr> 
        <tr> 
        <td>Motorrad&nbsp;Grundkurs:</td> 
        <td>160.-</td> 
        </tr> 
       </tbody> 
       </table> 
      </div> 
      </section> 
     </div> 
     <div class="accordion-section"> 
      <a class="accordion-section-title accordeonfarbe-00" href="#accordion-2-13695"><span class="arrow"></span>Weitere Informationen: Sprachen: Deutsch, Englisch...</a> 
      <section id="accordion-2-13695" class="thirdleft accordion-section-content"> 
      <div class="borderright pads"> 
       <table id="sb_13695"> 
       <tbody> 
        <tr> 
        <td>Sprachen: </td> 
        <td>Deutsch, Englisch, Französisch, Italienisch, Polnisch, Türkisch</td> 
        </tr> 
        <tr> 
        <td>Autotyp:</td> 
        <td>VW, BMW, MAN, SETRA, </td> 
        </tr> 
       </tbody> 
       <tbody></tbody> 
       </table> 
      </div> 
      </section> 
     </div> 
     <footer class="clearfix"> 
      <section> 
      <div class="bordertop pads" id="sbwl_13695"> 
       <div class="ratingoutside"> 
       <ul class="rating"> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li class="icon icon-star-two"></li> 
        <li><a href="bewertungen.php?irat=13695" onclick="showBewe(13695);return false;" title="12 Bewertungen anschauen" style="text-decoration:none;">(12)</a></li> 
       </ul> 
       </div> 
       <div class="rightbuts"><a class="buttonsmall" href="bewertungen.php?irat=13695" onclick="showBewe(13695);return false;" title="Bewertungen anschauen">Bewertungen anschauen</a> 
       <a class="buttonsmall" href="lernen/index.php?bewe_irat=13695">Fahrlehrer bewerten</a> 
       </div> 
       <p class="clicks minhide clearfix"> 30-Tage-Statistik : Inserat 307 Mal angezeigt. </p> 
      </div> 
      </section> 
     </footer> 
     </div> 
    </section> 
    <ul class="paginator"></ul> 
    <section class="texttabs clearfix"> 
     <p> 
     Fahrschulen in der Schweiz: Fahrschulen und Fahrlehrer für Auto, Motorrad, Lastwagen, Taxi und Boot. Verkehrskunde (VKU), Nothelferkurs, Motorradgrundkurs. Informationen zu Strassenverkehrsamt, Lernfahrausweis, Fahrprüfung, WAB hier im Schweizer Fahrlehrervergleich.       
     </p> 
     <p> 
     Der Schweizer Fahrlehrervergleich gibt Auskunft über Fahrschulen und Fahrlehrer, die in folgenden Kategorien unterrichten: Auto, Motorrad, Lastwagen, Taxi und Boot. Ebenfalls werden Angaben über Verkehrtheorie, Motorradgrundkurs, Nothelferkurs und Theorietraining gemacht. Finden Sie eine Auto-, Motorrad- oder Lastwagen-Fahrschule, Informationen zu Ausbildung, Grundkurs, Theoriekurs, Schleuderkurs und Autoprüfung. Fahrschule Fahrschulen Fahrlehrer Zürich Bern Basel Luzern Aargau Schweiz. Der Schweizer Fahrlehrervergleich beinhaltet über 5000 Fahrschulen und Fahrlehrer aus der ganzen Schweiz.       
     </p> 
    </section> 
    </article> 
    <aside> 
    <h2>Fahrlehrer und Fahrschulen finden</h2> 
    <section class="filterbox regone boxstyle"> 
     <h3>Fahrschulen </h3> 
     <ul> 
     <li><a title="Fahrschule Hugis Fahrschule AG" href="http://www.fahrlehrervergleich.ch/fahrschule-Hugis-Fahrschule-AG-Z%C3%BCrich-fahrschule-14581.htm">Hugis Fahrschule AG</a></li> 
     <li><a title="Fahrschule Hugis Fahrschule AG" href="http://www.fahrlehrervergleich.ch/fahrschule-Hugis-Fahrschule-AG-Adlikon+b.+Regensdorf-fahrschule-13695.htm">Hugis Fahrschule AG</a></li> 
     </ul> 
    </section> 
    <section class="filterbox regone boxstyle"> 
     <h3>Sprachauswahl</h3> 
     <ul> 
     <li><a hreflang="de" href="http://www.fahrlehrervergleich.ch" title="Schweizer Fahrlehrervergleich">Schweizer Fahrlehrervergleich</a></li> 
     <li><a hreflang="fr" href="http://auto-ecole.comparatif.ch" title="Comparatif d'auto-écoles suisses">Comparatif d'auto-écoles suisses</a></li> 
     <li><a hreflang="it" href="http://autoscuola.comparazione.ch" title="Confronto delle autoscuole svizzere">Confronto delle autoscuole svizzere</a></li> 
     <li><a hreflang="en" href="http://driving-instructor.fahrlehrervergleich.ch" title="Swiss Driving Instructors">Swiss Driving Instructors</a></li> 
     </ul> 
    </section> 
    <section class="filterbox regone boxstyle"> 
     <h3>Siehe auch...</h3> 
     <ul> 
     <li> 
      <a href="http://www.zahnarztvergleich.ch" title="Schweizer Zahnarztvergleich"> 
      Schweizer Zahnarztvergleich       </a> 
     </li> 
     <li> 
      <a href="http://www.treuhandvergleich.ch" title="Schweizer Treuhandvergleich"> 
      Schweizer Treuhandvergleich       </a> 
     </li> 
     <li> 
      <a href="http://www.anwaltvergleich.ch" title="Schweizer Anwaltvergleich"> 
      Schweizer Anwaltvergleich       </a> 
     </li> 
     <li> 
      <a href="http://www.coiffeurvergleich.ch" title="Schweizer Coiffeurvergleich"> 
      Schweizer Coiffeurvergleich       </a> 
     </li> 
     </ul> 
    </section> 
    </aside> 
</div> 

私のコードは次のようになります。

doc = Nokogiri::HTML(page) 
doc.css(".leftrightleft").each do |item| 
    title = item.at_css("h3 a").text 
    address = item.at_css(".biger+ p , h3+ p") 
    address.search('br').each do |n| 
    n.replace(" ") 
    end 
    address = address.text 

    puts "-----" 
    puts title 
    puts "Address:" 
    puts address 
    puts "Course Types:" 

    item.css("table+ table tr+ tr").each do |type_price| 
    if type_price.css("td")[0] && type_price.css("td")[1] != nil 
     course_type = type_price.css("td")[0].text 
     course_type.gsub!(":", "") 
     price = type_price.css("td")[1].text 
     puts "\t #{course_type}: #{price}" 
    end 
    end 
end 

問題は、私はitem.css("table+ table tr+ tr").each do |type_price|を行うとき、それはその1つの以下のすべての項目のためにそれをやっていないだけだということです特定の項目の

私が間違っていることを誰かが説明できますか?

+1

データへのリンクを使用しないでください。代わりに、最小限に抑えて、問題を示すために必要なものだけを取り出し、それをあなたの質問に含めてください。あなたの質問には入力がないという結果につながり、同様の解決策を探している人にとっては役に立たなくなります。 –

+0

申し訳ありません。私の質問を更新しました – InesM

+0

問題は、問題を示すのに役立つ入力データ(最小限のHTML)がなく、テストしたい場合はコードを実行可能/使用可能にしていません。 "[mcve]"はそれらについてはっきりしています。あなたのお手伝いをする必要があります。 –

答えて

0

私はこれを解決する方法を考え出しました。

このようなループを作る代わりに、item.css("table+ table tr+ tr").each do |type_price|という項目は、すべてのページからページの最後までループします。これはitem.at_css("table+ table tbody").css("tr+ tr").eachのようにしています。

このソリューションでは、最初のテーブル要素を取得してから、残りの行をループして動作します。

0

私は見ましたが、ノコギリは奇妙なマークアップのために要素を混乱させているようです。

require 'nokogumbo' 
doc = Nokogiri::HTML5.get(uri) 

は、私は本当にそれのlibxmlは鋸山ではなく、相互に重なったりをやっていると言う必要があります:HTML5への切り替え

は、おそらく最善の策です。

+0

"本当にlibxmlが混乱していると言わなければならない..."はい。ノコギリはメッセンジャーだけです。 –

関連する問題