【发布时间】:2015-06-29 05:50:24
【问题描述】:
问题:我想在 HTML 文档中找到构成文本字符串的节点的 xpath。使用的语言是python(lxml来解析文档)
为了说明这个想法,请考虑文档:
<HTML>
<HEAD>
<TITLE>sample document</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<HR>
<a href="http://google.com">Goog</a>
<H1>This is one header</H1>
<H2>This is a another Header</H2>
<P>Travel from
<P>
<B>SFO to JFK</B>
<BR>
<B><I>on May 2, 2015 at 2:00 pm. For details go to confirm.com </I></B>
<HR>
<div style="color:#0000FF">
<h3>Traveler <b> name </b> is
<p> John Doe </p>
</div>
.....
现在,给定字符串“SFO to JFK on May 2, 2015”和“Traveler name is John Doe”,我如何获取构成该字符串的节点集中第一个节点的 Xpath。 (如果这很困难,即使是一组节点也可以)
示例输出:
"SFO to JFK on May 2, 2015" -> /html/body/p/p/b
"Traveler name is John Doe" -> /html/body/p/p/div/h3
作为后续,如果我们有一个正则表达式,而不是上面的字符串,解决问题的方法是什么?
注意:在 python 实现方面,我正在处理下面的 sn-p 中的问题
import lxml.html as lh
from StringIO import StringIO
from lxml import etree
elem_tree = lh.parse(StringIO(html_document))
xpath = etree.XPath(_the_xpath_here)
list_of_nodes = xpath(elem_tree)
【问题讨论】:
-
xpath 不会只是“//B”,因为这是您要搜索的唯一 html 元素,它应该为您提供页面上所有 B 元素的数组。您也可以使用 $x("xpath"); 在 chrome 控制台中运行 xpaths
-
好吧,对不起,我应该澄清一下。文件不固定。正如问题应该是,如果我有任何 HTML 和一组字符串,我将如何获得 xpath?
标签: python html regex xml xpath