Elemente anhand der CSS-Klasse mithilfe von XPath finden
Beim Web-Scraping ist es häufig erforderlich, HTML-Elemente anhand ihrer CSS-Klasse zu finden. XPath, ein leistungsstarkes Tool zum Navigieren in XML- und HTML-Dokumenten, bietet eine Möglichkeit, dies zu erreichen.
Stellen Sie sich eine HTML-Seite mit einem div-Element mit einer Klasse namens „Test“ vor. Um dieses Element zu finden, kann die folgende XPath-Abfrage verwendet werden:
//*[contains(@class, 'Test')]
Diese Abfrage wählt alle Elemente aus, die die Klasse „Test“ enthalten , unabhängig davon, wo sie in der Dokumentstruktur angezeigt werden.
Um die Leistung zu optimieren, können Sie die Suche auf bestimmte Elementtypen, wie z. B. Divs, eingrenzen. Die folgende Abfrage beschränkt beispielsweise die Suche auf Divs, die die Klasse „Test“ enthalten:
//div[contains(@class, 'Test')]
Wenn ja Elemente mit Klassen wie „Testvalue“ oder „newTest“ werden von der obigen Abfrage ebenfalls abgeglichen. Um eine genauere Übereinstimmung sicherzustellen, können Sie eine verkettete Zeichenfolge verwenden, die ein Leerzeichen vor und nach der „Test“-Klasse enthält, wie von @Tomalak vorgeschlagen:
//div[contains(concat(' ', @class, ' '), ' Test ')]
Diese Abfrage stimmt nur mit Divs überein, die das Wort „Test“ als separaten Klassenwert haben.
Um Leerzeichen zu entfernen Bei Problemen können Sie die Leerzeichen auch mit der Funktion normalize-space normalisieren, wie von @Terry vorgeschlagen:
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
Abschließend ist es wichtig, das Sternchen (*) in diesen Abfragen durch den tatsächlichen Elementnamen zu ersetzen, mit dem Sie übereinstimmen möchten, es sei denn, Sie möchten alle Elemente im Dokument durchsuchen. Dadurch wird die Effizienz der Abfrage verbessert.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3