xpathリストから要素を削除する際に問題があります。
私はPythonで新人ですので、私はクマと一緒にくつろいでください。
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
'// text()'のXPathは要素ノードではなくテキストノードを選択しますが、 '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 '、'エース '、' \ r \ n \ t \ t \ t \ t '、'コブラ '、' \ r \ n \ t \ t \ t \ t '、' \ r \ n \ t \ t \ t '、' \ r \ n \ t \ t '、' \ r \ n \ t \ t '、' Alfa Romeo 'など。 ACはAceとCobraの親であり、Alfa Romeoは新しい親などです。https://bilmodel.dk/Sitemap/Bilerを見ると、私の言葉がはっきりしています。だから私はこのリストを強烈な方法で欲しがるので、検索するのは簡単だろう。 そして、おそらく私が下っている道よりももっと簡単なやり方があります; – JesperSR