2024-10-02 22:33:32 发布
网友
这一定是经典之作,但我在这里找不到答案。我正在使用lxml cssselect解析以下标记:
<li><a href="/stations/1"><span class="num">3</span> Detroit</a></li>
我想得到<li>标记的内容,而不需要标记的内容。在
<li>
目前我有:
{但是这给了我}。我怎么才能得到Detroit?在
Detroit
我对lxml不是很熟悉,但这是在IDLE(v2.7.2)下工作的。我认为使用XPath比CSS更好:
>>> xml = '<li><a href="/stations/1"><span class="num">3</span> Detroit</a></li>' >>> root = etree.fromstring(xml) >>> print( root.xpath('/li/a/text()')) [' Detroit']
在这之后似乎不需要太多的选择。在
编辑1
下面是一个稍微不同的例子,它可能会影响你的决定:
我希望这有帮助, 扎卡里
元素的itertext方法返回节点文本数据的迭代器。对于您的<a>标记,' Detroit'将是迭代器返回的第二个值。若文档的结构始终符合已知的规范,则可以跳过特定的文本元素来获得所需的内容。在
itertext
<a>
' Detroit'
from lxml import html doc = html.fromstring("""<li><a href="/stations/1"><span class="num">3</span> Detroit</a></li>""") stop_nodes = doc.cssselect('li a') stop_names = [] for start in stop_list: node_text = start.itertext() node_text.next() # Skip '3' stop_names.append(node_text.next().lstrip()) continue
您可以将css选择器与Zachary's answer中提到的xpath text()函数组合在一起(如果您更习惯于使用css选择器而不是xpath):
text()
我对lxml不是很熟悉,但这是在IDLE(v2.7.2)下工作的。我认为使用XPath比CSS更好:
在这之后似乎不需要太多的选择。在
编辑1
下面是一个稍微不同的例子,它可能会影响你的决定:
^{pr2}$我希望这有帮助,
扎卡里
元素的
itertext
方法返回节点文本数据的迭代器。对于您的<a>
标记,' Detroit'
将是迭代器返回的第二个值。若文档的结构始终符合已知的规范,则可以跳过特定的文本元素来获得所需的内容。在您可以将css选择器与Zachary's answer中提到的xpath
^{pr2}$text()
函数组合在一起(如果您更习惯于使用css选择器而不是xpath):相关问题 更多 >
编程相关推荐