【发布时间】:2016-09-20 18:45:01
【问题描述】:
Python 2.7 使用 lxml
我有一些令人讨厌的 html,看起来像这样:
<td>
<b>"John"
</b>
<br>
"123 Main st.
"
<br>
"New York
"
<b>
"Sally"
</b>
<br>
"101 California St.
"
<br>
"San Francisco
"
</td>
所以基本上它是一个包含大量内容的单个 td。我正在尝试编译名称及其地址的列表或字典。
到目前为止,我所做的是获得一个名称使用tree.xpath('//td/b') 的节点列表。因此,假设我目前在 John 的 b 节点上。
我正在尝试为当前节点之后但在下一个 b 节点 (Sally) 之前的所有内容获取 whatever.xpath('string()')。我尝试了一堆不同的 xpath 查询,但似乎无法做到这一点。特别是,每当我在没有[] 括号的表达式中使用and 运算符时,它都会返回一个布尔值,而不是满足条件的所有节点的列表。有人可以帮忙吗?
【问题讨论】:
-
既然过滤符合表达式的元素是括号做的事情,你为什么不想拥有它们(假设你的
and正在为你的表达式添加条件,这是为了什么)?您能否展示您尝试过的内容,具体包括您尝试使用and的方式? -
...您当前的答案就目前而言还不错,但它们不太可能帮助在标题中提出相同问题的人(尝试将多个条件应用于 XPath询问);如果您添加了更多信息,则应该可以回答名义问题。相反,如果您对此不感兴趣,则可以考虑编辑问题标题以更好地反映您真正关心的内容。
-
我还建议将标题更改为“从 HTML 中检索尾部文本”之类的内容,因为这是问题的核心!