如何通过XPath提取div中不含链接的纯文本?
当然可行!
要提取这个div里不含链接的文本内容,用XPath完全可以做到,核心思路就是只选择div元素下的直接文本节点,忽略子元素(也就是那个a标签)的内容。
给你两种常用的实现方式:
第一种:直接选中div下的所有文本节点
用这个XPath表达式://div[@id='mydiv']/text()
这个表达式会返回div里所有不属于子元素的文本片段(也就是some text和la la la这两段),你只需要把这些片段拼接起来,再处理掉多余的空格就行。比如在Python的lxml库中,可以这么写:from lxml import etree html = """<div id="mydiv"> some text <a href="#">super link</a> la la la </div>""" tree = etree.HTML(html) text_parts = tree.xpath("//div[@id='mydiv']/text()") result = ''.join(text_parts).strip() print(result) # 输出:some text la la la第二种:用XPath自带的函数直接合并并规范化文本
如果想一步到位处理空格,可以用string-join和normalize-space组合:normalize-space(string-join(//div[@id='mydiv']/text(), ' '))这个表达式会先把所有文本片段用空格连接,再自动去掉首尾空格和中间的多余空格,直接得到整洁的
some text la la la。
简单来说,XPath支持精准选择元素的子文本节点,完全能满足你提取不含链接文本的需求~
内容的提问来源于stack exchange,提问作者Eugene Chefranov
相关产品推荐
相关产品推荐

