我试图从一个网页中捕获一些文本(运行脚本时会传递其URL),但它隐藏在段落标记中,没有指定其他属性。我可以收集每个段落标记的内容,但是我想从树中删除包含任何关键字列表的元素。在
我得到以下错误:
tree.remove(elem) TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got _ElementStringResult)
我知道当我试图遍历树时,我得到的是错误的类型,但是我如何取而代之的是元素呢?在
样本代码:
#!/usr/bin/python
from lxml import html
from lxml import etree
url = sys.argv[1]
page = requests.get(url)
tree = html.fromstring(page.content)
terms = ['keyword1','keyword2','keyword3','keyword4','keyword5','keyword6','keyword7']
paragraphs = tree.xpath('//p/text()')
for elem in paragraphs:
if any(term in elem for term in terms):
tree.remove(elem)
在您的代码中,} ,它具有实例方法
elem
是一个^{getparent
。它的父节点是Element
节点之一的Element
对象。在父级有一个
remove
方法,可用于将其从树中删除:我不相信有更直接的方法,我也没有一个好的答案为什么没有
removeself
方法。在使用示例html:
^{pr2}$您可以在代码中看到这一点:
从评论来看,这段代码似乎不适合你。如果是这样,您可能需要提供有关html结构的更多信息。在
相关问题 更多 >
编程相关推荐