Python XPath选择元素的字符串值,但使用<;br/>;换成新线?

Python XPath选择元素的字符串值,但使用<;br/>;换成新线?,python,xpath,scrapy,scrapy-spider,xpath-1.0,Python,Xpath,Scrapy,Scrapy Spider,Xpath 1.0,是否可以在html上调用xpathnormalize-space(),并将显示为新行?XPath版本是1.0 我们解析网站上的文章。真实HTML代码示例: <div id="someid"> <img src="https://habrastorage.org/webt/ej/ye/hp/ejyehp08ercmqzlhzh3um6mtukm.jpeg"><br> <br> Организовать удаленный до

是否可以在html上调用xpath
normalize-space()
,并将

显示为新行?XPath版本是1.0

我们解析网站上的文章。真实HTML代码示例:

<div id="someid">
    <img src="https://habrastorage.org/webt/ej/ye/hp/ejyehp08ercmqzlhzh3um6mtukm.jpeg"><br>
    <br>
    Организовать удаленный доступ для сотрудников — задача прикладная. Решений на рынке немало, при этом, и подводных камней достаточно. Под катом рассказ о нашем «чемодане», который раскладывается быстро и удобно за 30 минут. Просьба не воспринимать это как рекламный BS, поскольку внутри реальная инструкция по применению.<a name="habracut"></a><br>
    <br>
    <a href="https://www.parallels.com/ru/products/ras/remote-application-server/">Parallels Remote Application Server</a> (RAS) — это комплексное средство для доставки виртуальных приложений и рабочих столов, позволяющее работать с приложениями и данными с любого устройства, в том числе мобильного. Мы понимаем, что такие решения хочется сначала протестировать в конкретных условиях, прежде чем принимать решение о покупке.     <br>
    <br>
</div>

这个XPath 2.0表达式

string-join(
for $n in (//div[@id="someid"]//node()[self::br or self::text()]) 
    return if (name($n)='br') 
           then codepoints-to-string(10)
           else $n, '')

将连接目标
div
的所有文本节点子体的字符串,用换行符替换所有
br
元素。

不幸的是,我无法用xpath解决此问题。此解决方案适用于python(scrapy框架),但算法也适用于其他语言

parsed_text = remove_tags(response.xpath(record['xpath_text']).extract_first())
text = re.sub(r'\n\s*\n', '\n\n' , parsed_text).strip()

1) 您想使用
normalize-space()
有什么具体原因吗?2) 您想将这两个子字符串作为单个字符串还是作为两个字符串的列表获取?3) 分享你的XPath@Andersson1)我们需要的文本没有html标记,但有断点。2) 我们可以从1点到2点∞
标签。我们对文章进行爬网。您确信
br
是混合内容中唯一的元素类型吗?@kjhughes问updated@ArtemDumanov,在所提供的HTML片段中,所有这些文本节点都没有父标记。您能再次更新HTML吗?我检查了xpath版本,它是1.0。xpath 1.0也可以这样做吗?无论如何,谢谢你的回答。当我回答时,问题被标记为XPath 2.0。(它已经被编辑过了。)我怀疑仅仅使用XPath 1.0无法找到一个纯粹基于XPath的解决方案——必须用宿主语言编写代码
parsed_text = remove_tags(response.xpath(record['xpath_text']).extract_first())
text = re.sub(r'\n\s*\n', '\n\n' , parsed_text).strip()