Ruby Mechanize erhält Elemente mit spezifiziertem Text

7

Ich versuche, den Inhalt einer Website mit mechanize zu analysieren, und ich stecke an einem Punkt fest. Der Inhalt, den ich analysieren möchte, befindet sich in einem li -Tag und ist nicht immer in der gleichen Reihenfolge.

Nehmen wir an, dass wir die folgenden haben, wo die Reihenfolge von li -Tags nicht immer die gleiche ist und einige manchmal gar nicht da sind.

%Vor%

Ich möchte nur die li -Details erhalten, wo der span -Text beispielsweise title 3 ist. Was ich getan habe, ist das Folgende, das mir die Details von der ersten li gibt:

%Vor%

Gibt es eine Möglichkeit zu tun, was ich mit mechanize tun möchte oder sollte ich auch andere Mittel verwenden?

    
gkaran89 27.09.2013, 10:38
quelle

4 Antworten

16
%Vor%

Erklärung: Mit at können Sie css oder xpath selector verwenden. Um diesen Ansatz lesbarer und ähnlicher zu machen, verwenden Sie die CSS-Auswahl, aber das Problem besteht darin, dass CSS die Auswahl nicht anhand von Text vornehmen kann. Dank Nokogiri können Sie den JQuery-Selektor verwenden, sodass -Methoden zulassen ist.

Die Auswahl erhält das span-Element. Wenn Sie also den übergeordneten li-Element abrufen möchten, können Sie parent -Methoden verwenden und den Text dann einfach abrufen.

    
Rodri_gore 27.09.2013, 17:48
quelle
2

Da Sie dies mit Mechanize machen wollen (und ich sehe, dass einer der Kommentare die Verwendung von Nokogiri empfiehlt), sollten Sie sich bewusst sein, dass Mechanize auf Nokogiri basiert, sodass Sie tatsächlich alle Nokogiri-Funktionen nutzen können durch Mechanisieren.

Um Sie aus den Dokumenten in Ссылка

anzuzeigen
  

Mechanize.html_parser = Nokogiri :: XML

Sie können dies mit XPath und der mechanize page.search Methode erreichen.

  

page.search ("// div [@ class = 'Einzelheiten'] / ul / li [span = 'title 3']"). text

Dies sollte in der Lage sein, Ihnen den Text für das li-Element zu geben, nach dem Sie suchen. (nicht verifiziert mit .text, aber der XPath funktioniert)

Sie können den XPath hier testen: Ссылка

    
Jeff LaJoie 27.09.2013 15:30
quelle
1

Ein sauberer css -Ansatz:

%Vor%     
pguardiario 28.09.2013 05:07
quelle
0

Nach dem Kommentar, ich denke, Sie suchen etwas wie unten.

  

Wie gesagt, das Problem ist, dass es mir den ersten Buchstaben gibt, während ich den Texttitel 3

möchte
%Vor%     
Arup Rakshit 27.09.2013 15:41
quelle

Tags und Links