我在從我的xpath列表中刪除元素時遇到問題。
我是一個在Python和HTML刮的新手,所以忍耐着我:)
我讀過nodes.getparent().remove(nodes)
應該刪除一個元素,但我甚至不能編譯它。
因此,我似乎沒有得到我需要能夠刪除的元素類型。
我可以毫無問題地撥打nodes.getparent()
,但不能刪除。從xpath樹中刪除元素不起作用
Error:
"TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got lxml.etree._ElementUnicodeResult)"
問候
加斯帕
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)
什麼是你最初的目標是什麼?你想要你的腳本做什麼? – Andersson
您的XPath使用'text()'選擇文本節點而不是元素節點,'remove'方法應該刪除元素節點,而不是文本節點。此外,對於lxml和Python,文本節點的處理是特殊的,它們作爲智能字符串返回,請參閱http://lxml.de/xpathxslt.html#xpath-return-values。至於你的問題,你能發表你正在解析的HTML代碼片段,並解釋你想刪除哪些元素? –
謝謝您的回覆。清單看起來像這樣: ['\ r \ n \ t \ t','AC','\ r \ n \ t \ t \ t','\ r \ n \ t \ t \ t \ t ','Ace','\ r \ n \ t \ t \ t \ t','Cobra','\ r \ n \ t \ t \ t \ t','\ r \ n \ t \ t \ t','\ r \ n \ t \ t','\ r \ n \ t \ t','阿爾法羅密歐',....例如, AC是Ace和Cobra的父母,Alfa Romeo是一位新的父母,等等。看看https://bilmodel.dk/Sitemap/Biler,我的意思就更明顯了。所以我只是想以直觀的方式來看這個列表,所以很容易搜索。 有可能是一個mucher更容易做到這一點,而不是我正在往下走的路徑;) – JesperSR