2017-12-27 10 views
0

Ich habe meine obligatorischen Daten von der Scopus-Website gesammelt und in der Liste "s" gespeichert. Aber alle Daten wurden in s [1] gespeichert. Mein Code ist:Warum Webelemente in nur einem Element einer Liste liegen?

s=[] 
document=driver.find_elements_by_xpath("""//*[@id="srchResultsList"]/tbody""") 
for i in document: 
    s.append(i.text) 

Was soll ich tun? Ich benutzte Selen-Paket in Python 2.7.

+3

, wenn Sie Tabellendaten müssen Sie durchlaufen 'tr' (Zeilen) und' td' (Spalten) nicht die 'tbody' –

+0

erhalten müssen Veröffentlichen Sie einen Link zur Seite und erklären Sie, was genau Sie suchen. Geben Sie ein Beispiel für das relevante HTML, was Sie von dem HTML erwarten und den Code, den Sie verwenden, um dieses HTML zu erhalten. – JeffC

Antwort

1

Ich habe festgestellt, dass Sie versuchen, eine tbody Tabelle Tag abzufragen. Es ist nicht der Grund? Im Allgemeinen gibt es nur ein tbody-Tag in einer Tabelle und es ergibt sich ein eindeutiges Element.

Sie haben uns nicht gesagt, wenn Sie versuchen, alle Elemente oder alle td Elemente oder sogar eine andere Art von Tag in ihnen zu speichern und zu speichern, aber was immer Sie versuchen, zurückzukehren, müssen Sie um den Selektor zu ändern.

Stellen wir uns vor, dass Ihr XPath ein tbody Element mit einer Tonne IWebElements in der es zurückgibt: tr, td, ein, spanne ... Aber Ihre Wähler nur für das tbody Element, nicht die inneren Elemente bittet, verstehst du es?

versuchen Sie einfach, Ihre Xpath zu //*[@id="srchResultsList"]/tbody/tr zu ändern, wenn Sie alle tr Elemente möchten, außer Kopfzeilen tr;

Sie können auch den folgenden xpath //*[@id="srchResultsList"]/tbody//td verwenden, der alle gewünschten td-Elemente zurückgibt. wenn Sie alle tr und td Elemente innerhalb tbody möchten, können Sie

In einem anderen Fall, Abfrage, die Art und Weise: //*[@id="srchResultsList"]/tbody/tr | //*[@id="srchResultsList"]/tbody//td

Sie können auch subqueryes ändern oder erstellen Sie alle Elemente zurück, was Sie wünschen, aber Sie brauchen angeben, auf Wähler: Selen akzeptiert nur das imediate Ergebnis ohne Kinder

+0

Vielen Dank für die vollständige Antwort. Deine Antwort ist gut. Aber hat einen Fehler bei der Indexierung der Liste. Ich muss eine Liste von 200 Rogen haben, aber die Liste hat 202 Zeilen. Was ist deine Meinung dazu? –

+0

Ich muss nur verstehen, was Sie wollen: Der zurückgegebene Wert in Selen ist falsch? Oder möchten Sie eine bestimmte Anzahl von Elementen aufnehmen? –

+0

Wie auch immer, Sie können immer das chrome Konsolenfenster benutzen, um alle Ihre xpath und cssSelectors zu testen: versuchen Sie '$ (" your-css-selector ")' oder '$ x (" your-xpath ")' 'zu verwenden. Ich weiß nicht, ob ein anderer Browser den xpath-Selektor unterstützt, da es sich um eine Konsolenfunktion handelt, nicht um js oder jquery. Aber Chrom unterstützt sicher –

Verwandte Themen