从xpath树中删除元素不起作用

时间:2017-07-29 11:02:16

标签: python xpath lxml

从xpath列表中删除元素时遇到问题 我是Python和HTML抓取的新手,所以忍受我:) 我已经读过nodes.getparent().remove(nodes)应删除一个元素,但我甚至无法编译它。
所以看起来我没有得到我需要删除的元素类型 我可以毫无问题地致电nodes.getparent(),但不能删除。

  

错误:

  " TypeError:参数'元素'类型不正确(预期lxml.etree._Element,得到lxml.etree._ElementUnicodeResult)"

最好的问候 的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)

1 个答案:

答案 0 :(得分:0)

  

问题:我没有获得我需要删除的元素类型

要删除的元素是“特殊文本节点”,而不是删除,通过指定空白for (var i = 0, el = document.querySelectorAll(".myClickFunction") ; i < el.length; i++) { el[i].dataset.index = i; el[i].onclick = function(event) { for (var n = 0, el_ = document.querySelectorAll("[id^=myDIV]") ; n < el_.length; n++) { el_[n].style.display = "none" } document.querySelectorAll("[id^=myDIV]")[event.target.dataset.index] .style.display = "block" } }清除它。

例如:

<div id="myDIVA" style="display:none;">blabla 1</div>
<div id="myDIVB" style="display:none;">blabla 2</div>
<div id="myDIVC" style="display:none;">blabla 3</div>
and they are hidden and/or shown by clicking div's:

<div class="myClickFunction">Show only ONE</div>
<div class="myClickFunction">Show only TWO</div>
<div class="myClickFunction">Show only THREE</div>
  

输出

''

使用Python测试:3.4.2