Ich habe ein Problem beim Entfernen von Elementen aus meiner Xpath-Liste.
Ich bin ein Anfänger in Python und HTML-Scraping, also bitte mit mir :)
Ich habe gelesen, dass nodes.getparent().remove(nodes)
sollte ein Element entfernen, aber ich kann nicht einmal kompilieren.
So scheint es, dass ich nicht den Elementtyp erhalte, den ich entfernen muss.
Ich kann nodes.getparent()
ohne Probleme anrufen, aber nicht auf das entfernen.Element aus Xpath-Baum entfernen funktioniert nicht
Error:
"TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got lxml.etree._ElementUnicodeResult)"
Mit freundlichen Grüßen
Jesper
from lxml import html
import requests
headers = {'User-Agent': 'Fiddler', 'Host': 'bilmodel.dk'}
page = requests.get('https://bilmodel.dk/Sitemap/Biler', headers=headers)
tree = html.fromstring(page.content)
#This will create a list of car brands
CarBrands = tree.xpath('//*[@id="content"]/ul[1]//text()')
for nodes in CarBrands:
if nodes.find('\r\n\t\t\t\t') == 0:
print('Found it')
nodes.getparent().remove(nodes)
# Press Enter to exit window
#CarBrand = input('Write car brand:')
print(CarBrands)
was ist Ihr erstes Ziel? Was willst du mit deinem Skript? – Andersson
Ihr XPath mit '// text()' wählt Textknoten und nicht Elementknoten, die 'remove' Methode soll Elementknoten entfernen, keine Textknoten. Bei lxml und Python ist die Behandlung von Textknoten besonders, sie werden als Smart Strings zurückgegeben, siehe http://lxml.de/xpathxslt.html#xpath-return-values. Was Ihr Problem betrifft, können Sie einen Ausschnitt des zu analysierenden HTML-Dokuments posten und erläutern, welche Elemente Sie entfernen möchten? –
Vielen Dank für Ihre Antwort. Die Liste sieht ungefähr so aus: ['\ r \ n \ t \ t', 'AC', '\ r \ n \ t \ t \ t', '\ r \ n \ t \ t \ t \ t ',' Ace ',' \ r \ n \ t \ t \ t \ t ',' Kobra ',' \ r \ n \ t \ t \ t \ t ',' \ r \ n \ t \ t \ t ',' \ r \ n \ t \ t ',' \ r \ n \ t \ t ',' Alfa Romeo ', .... Wo z AC ist ein Elternteil von Ace und Cobra, und Alfa Romeo ist ein neuer Elternteil usw. Wenn man auf https://bilmodel.dk/Sitemap/Biler schaut, ist es offensichtlicher, was ich meine. Also möchte ich diese Liste nur in einer intuitiven Art und Weise, so dass es leicht wäre, sie zu durchsuchen. Und es gibt wahrscheinlich eine Mucher einfachere Art, es zu tun, als der Pfad, den ich nach unten gehe;) – JesperSR