2017-12-31 39 views
1

Bezug nehmend this page, ich versuche, alle n Markets > Links zu bekommen, aber NUR diejenigen, die von Quoten gefolgt werden. Möglicherweise müssen Sie einige Seiten durchblättern, um ein Beispiel auf der Website zu sehen, oder es wird ein Screenshot unten angezeigt.Finden Sie nur Links, die von Ergebnissen gefolgt werden

screenshot of page

Aus dem Screenshot, die Links, die ich (eingekreist in grün) wollen durch Odds (rot eingekreist) gefolgt. Ich möchte nicht die Links (mit einem roten X markiert), die nicht von Odds (eingekreist in gelb) gefolgt sind.

Ist es möglich, alle .purple-arrow Elemente basierend darauf zu erhalten, wenn .bettype:nth-child(1) .bet-party daneben existiert?

Sollte mit folgenden und vorhergehenden einfach genug sein, aber dies ist nicht erwünscht.

//*[contains(@href,'/sports-betting/soccer/')]/ancestor::*[contains(@class,'bet-party')]/preceding-sibling::span['other-matches']//*[contains(@href, '/sports-betting/soccer/')] 
+0

Es ist schwer zu verstehen, was Sie zu tun versuchen. Bitte erläutern Sie in Worten, was Sie mit Code zu tun versuchen. Versuchst du nur Matches zu scratzen, bei denen Quoten angezeigt werden? Außerdem müssen Sie ein [mcve] posten. Ihr Code versucht, zu viel zu tun, was es auch schwierig macht einzuschränken, was Sie zu tun versuchen. Bitte bearbeiten Sie die Frage und vereinfachen Sie sie. Stellen Sie klar, was Sie tun möchten (in Worten), erwartetes Ergebnis und geben Sie dann einen MCVE Ihres Versuchs mit der aktuellen Ausgabe und der erwarteten Ausgabe ein. – JeffC

+0

@ JeffC Korrekt. Also, wenn ich kratze // [contains (@class, 'bet-party')] und dann // * [enthält (@href, '/ sports-wetten/soccer /')]. Die Links werden nicht neben den Namen der Wettparteien sein, die den Zweck des Datenkratzens vereiteln. –

+1

Ich habe die Frage aufgrund Ihrer Kommentare stark bearbeitet, um sie zu verdeutlichen und zu vereinfachen. Bitte werfen Sie einen Blick und stellen Sie sicher, dass ich nicht falsch verstanden habe, wonach Sie suchen. – JeffC

Antwort

1

Sie können dies mit XPath tun.

//div[@class='container-fluid'][not(.//div[contains(@class,'no-outcomes')])]//a[@class='purple-arrow'] 

Brechen it down

//div[@class='container-fluid'] 

eine DIV finden, der die Klasse 'Container-Flüssigkeit' enthält. Dies sind die Container der obersten Ebene, die die gesamte HTML-Zeile für jede Übereinstimmung enthalten.

[not(.//div[contains(@class,'no-outcomes')])] 

Es darf kein Nachkomme DIV haben, die die Klasse enthält ‚no-Ergebnisse‘. Wenn die DIV diese Klasse hat, werden in dieser Zeile keine Quoten gepostet, also wollen wir diese nicht.

//a[@class='purple-arrow'] 

und schließlich ... den Link mit der Klasse 'lila-Pfeil' zurückgeben.

Sie können dies in Chrome-Entwicklungstools mit $x() testen.

Verwandte Themen