alle mögliche Websiten-Elemente auflisten

Django, Flask, Bottle, WSGI, CGI…
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Hallo Community,

ich versuche jetzt gefühlt zeit einer Ewigkeit heraus zu finden, wie ich mit Selenium in Python Elemente einer Webseite nicht einfach nur zufällig auswähle sondern alle möglichen Ergebnisse auflisten kann, wenn mehrere div den selben Inhalt haben.
Ich habe auf der Website mehrere div mit den selben Eigenschaften in der Selben Gruppe (xPath und das suchen nach bestimmte Eigenschaften bringt mich also nicht weiter). Ich suche daher einfach nach den passenden Inhalt des Elements jetzt ist nur das Problem, dass mehrere Elemente gleich heißen und ich jetzt gerne alle möglichen Elemente auflisten würde und deren inhaltenen Links mit anderen Links anderer Elemente zu vergleichen, um schlussendlich die beiden Elemente zu finden, welche den selben Link haben (den Link kenne ich nicht).
Die Frage ist jetzt wie schaffe ich, dass alle passenden Elemente nach dem anderen Links untersucht werden und nicht nur ein zufälliges Element. Meine jetziger Code:

Code: Alles auswählen

element = driver.find_elements_by_tag_name('option')
Wenn ich das aber so mache nimmt er einfach eine zufälliges Element was halt "option" beinhaltet.
Freue mich über jegliche Hilfe :D

MFG Octarock
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

@Octarock: das kann nicht sein, die find_elements_by_xxx-Funktionen liefern alle Ergebnisse als Liste. Was beinhaltet `element`, wenn Du es ausgibst? Zeig doch Deinen gesamten Code.
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Code: Alles auswählen

links = driver.find_elements_by_partial_link_text('TV')
for link in links:
    print (link.get_attribute("href"))
Hier gibt es auf der Website 9 mögliche Elemente aber er gibt mir als Ergebniss genau einen Link.
Ich hab es auch mal mit anderen Schlüsselwörtern ausprobiert (von anderen Elementen) und da gibt er mir auch mehrere Links, aber immer noch zu wenig (z.B. nur 5 von 8 )
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

Ohne die Webseite zu kennen, kann man nicht sagen, warum Selenium angeblich nicht alle Links mit 'TV' findet. Bist Du schon alle <a>-Tags durchgegangen und hast geschaut, ob da alles dabei ist?
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Ich habe es jetzt noch ein paar mal getestet aber er findet immer unterschiedlich viele Links.
Es sind wie gesagt 9 Elemente die das Wort "TV" beinhalten und ja ich habe noch mal durch geschaut es ist ganz sicher enthalten.
Warum findet er beim selben Programm einmal 5 einmal 8 und dann einmal 7 Elemente.
Das müsste doch gleich swein egal wie die Website aufgebaut ist.
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

Ohne die Webseite zu kennen, kann man nicht sagen, warum Selenium angeblich nicht alle Links mit 'TV' findet.
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Aber das ist doch ein Problem was unabhängig von der Website ist. es kann doch nicht verschiedene Lösungen bei dem selben Befehl geben.
(bin nicht Zuhause habe also für die nächsten Tage keinen genauen Daten wie z. B. die website)
Benutzeravatar
Kebap
User
Beiträge: 720
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Bastel dir einfach ein kleines Beispiel, bei dem das gleiche passiert. Dabei lernst du meist genug.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

[codebox=html5 file=Unbenannt.html]
<article>
<div class="inner-article">
<h1><a class="name-link" href="/shop/backpack/9sde44/p934857">Backpack</a></h1>
<p><a class="name-link" href="/shop/backpack/9sde44/p934857">Black</a></p>
</div>
</article>

<article>
<div class="inner-article">
<h1><a class="name-link" href="/shop/backpack/j406yxui/bdh7t">Backpack</a></h1>
<p><a class="name-link" href="/shop/backpack/j406yxui/bdh7t">Red</a></p>
</div>
</article>

<article>
<div class="inner-article">
<h1><a class="name-link" href="/shop/backpack/tnuz67n/n6456v">Backpack</a></h1>
<p><a class="name-link" href="/shop/backpack/tnuz67n/n6456v">Blue</a></p>
</div>
</article>

<article>
<div class="inner-article">
<h1><a class="name-link" href="/shop/backpack/j0rghxui/dfg5">Backpack</a></h1>
<p><a class="name-link" href="/shop/backpack/j0rghxui/dfg5">Yellow</a></p>
</div>
</article>
[/code]
Das ist jetzt mal ein Beispiel.
Ziel: Den Link vom blauen Rucksack heraus zu finden. (vielleicht hab ihr ja andere Lösungen die funzen)
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

hat hier wirklich niemand eine Idee ?
Da muss es doch eine Lösung gegeb!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Problem ist: dass was du beschreibst und präsentierst passt nicht mit den Erfahrungen hier zusammen. Es gibt keinen technischen Grund warum da nur eine teilmenge zurück kommt. Also ist das ein Problem auf deiner Seite. Ohne Code der das nachvollziehbar macht (heißt: in eine Datei speichern, laufen lassen, Fehler bekommen) kann man nur sagen “du machst was falsch.”
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

also eine beispiel Seite wäre: http://www.supremenewyork.com/shop/all/bags
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gut. Dann muss ich ja nur noch den Code für die Tags die du vermisst selbst schreiben, und schon geht’s los.... :roll:

Bitte schreib ein in sich geschlossenes Beispiel das dieses Verhalten zeigt. Sonst kann das hier keiner nachvollziehen.
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Es fehlen ja immer unterschiedliche !!
wenn ich jetzt z.b. nach den Div mit "Red" suche kommt einmal der Rücksack, Bauchtasche ... und einmal alles bis auf den Rucksack.
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

@Octarock: wie soll man Dir helfen, wenn Du nicht verrätst was Du genau machst...
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

also noch mal auch wenn es schon im Verlauf genannt wurde.
Ich versuche jetzt bei dieser Seite den roten Rucksack automatisch auszuwählen, aber ohne den Link zu wissen, der sich hinter ihn verbirgt.
Also war meine Überlegung, dass ich alle Links der Elementen mit den Inhalt "Red" mit allen Links der Elementen mit den Inhalt "Backpack" vergleiche. Und die Elemente mit dem selben Link, ist dann der richtige Rucksack.(wenn euch andere Ideen einfallen nur zu ich freue mich über jede Lösung)
Nur ist das Problem, dass wenn ich alle Links von allen Elementen mit "Backpack" auflisten lasse, einmal der Link vom Blauen und Roten und dann einmal die Links vom schwarzen und Blauen.
Warum findet er nicht immer alle ??? und wie kann ich es lösen !!
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

versteht ihr es auch nicht oder kennt ihr keine Lösung ?
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

@Octarock: wie soll man Dir helfen, wenn Du nicht verrätst was Du genau machst. Du hast bisher nur 3 Zeilen Code gezeigt, der ziemlich nutzlos ist, und alle Deine Beschreibungen sagen auch nicht genau, wie Du denn versuchst, die Seite zu lesen.
Octarock
User
Beiträge: 25
Registriert: Dienstag 3. April 2018, 01:21

Ich weiß echt nicht mehr wie ich es euch klar machen soll.
mir ist es gerade egal wie ich die Links vergleiche, wie ich auf die Seite komme oder wie der Bot dann bezahlt.
Ich will gerdae nur eins nämlich, dass er alle, ALLLEEE Links von allen Elementen mit den Inhalt z.b. Rucksack findet und sie mir dann ausspuckt.
Ich verstehe nicht was denn hir noch für Infos fehlen ?
Mir ist es egal ob mein Code oder nicht, ob die Lösung kompliziert ist oder nicht, hauptsache er listet mir dann alle Links auf.
Wenn infos Fehlen bitte sagen welche ich weiß wirklich nicht was ich noch sagen soll
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

@Octarock: Du hast ein Programm geschrieben, das die Daten von einer Webseite liest, das nach Deinen Angaben nicht funktioniert. Das kann aber niemand nachvollziehen, weil niemand Dein Programm kennt. Solange Du also das Programm nicht zeigst, kann Dir auch niemand helfen.
Antworten