我一直在尝试使用xapth从一些html元素中提取一部分文本,但似乎我出了问题,这就是为什么我做不到的原因。你知道吗
Html元素:
htmlelem = """
<div class="content">
<p>Type of cuisine: </p>International
</div>
"""
我想使用xpath挖掘International
。我知道如果我想用css selector
提取相同的内容,我可以用.next_sibling
获得成功,但我不想走这条路。你知道吗
也就是说,如果我这样尝试,我可以用xpath
得到同样的结果:
tree.xpath("//*[@class='content']/p/following::text()")[0]
但是上面的表达式不是我想要的,因为如果我坚持使用driver.find_element_by_xpath()
,就不能在seleniumwebdriver中使用相同的表达式
我唯一感兴趣的方法是如下,但它不起作用:
"//*[@class='content']/p/following::*"
现实生活中的例子:
from lxml.html import fromstring
htmlelem = """
<div class="content">
<p>Type of cuisine: </p>International
</div>
"""
tree = fromstring(htmlelem)
item = tree.xpath("//*[@class='content']/p/following::text()")[0].strip()
elem = tree.xpath("//*[@class='content']/p/following::*")[0].text
print(elem)
在上面的示例中,我可以成功打印item
,但无法打印elem
。但是,我想修改elem
中使用的表达式。你知道吗
如何使其工作,以便相同的xpath
可以在lxml
库或selenium
中使用?
由于OP正在寻找一种从xpath外部提取文本的解决方案,下面应该这样做,尽管方式有些尴尬:
输出:
这种方法的需要是lxml解析html代码方式的结果:
tree.xpath("//*[@class='content']")
导致长度为1的list
。 列表中的第一个(也是唯一一个)元素tree.xpath("//*[@class='content']")[0]
是一个lxml.html.HtmlElement
,它本身可以被视为一个列表,并且长度为1。你知道吗在该
lxml.html.HtmlElement
中第一个(也是唯一一个)元素的tail
中隐藏所需的输出。。。你知道吗相关问题 更多 >
编程相关推荐