在 XPath 中获取(文本)
Posted
技术标签:
【中文标题】在 XPath 中获取(文本)【英文标题】:Get (text) in XPath 【发布时间】:2011-07-24 03:07:40 【问题描述】:我有以下 DOM 结构/html,我想获取(只是练习......)标记的数据。
在 h2 元素下的那个。那个 div[@class="coordsAgence"] 元素,下面有更多的 div 子元素和更多的 h2 .. 这样做:
div[@class="coordsAgence"]
将获得该值,但带有额外的不需要的文本。 更新:我基本上想要的值(来自此示例)是:“GALLIER Dennis”文本。
【问题讨论】:
图片真的帮不上什么忙。当人们建立答案时,简化的文本版本会更有用。 投反对票。代码作为截图,一点都不好看。 【参考方案1】:您似乎想要该 div 中的第一个文本节点:
div[@class="coordsAgence"]/text()[1]
应该这样做。
请注意,这假定<div class="coordsAgence">
内的这些 cmets 之间实际上没有空格;否则,空格将构成您必须考虑的其他文本节点。
【讨论】:
【参考方案2】:获取div
中第一个h2
之后的第一个文本节点,类为"coordsAgence"
:
div[@class='coordsAgence']/h2[1]/following-sibling::text()[1]
请注意,第一个表达式返回第一个 h2
之后的第一个文本节点,即使在两者之间出现了其他节点。如果您只想在它是立即跟随第一个h2
的节点时返回文本,那么尝试这样的操作:
div[@class='coordsAgence']/h2[1][following-sibling::node()[1][self::text()]]/following-sibling::text()[1]
【讨论】:
【参考方案3】:使用 Python/Scrapy 从 h1 标签中获取文本(例如):
response.xpath(
"//div[contains(@class, 'class_name')]//h1[contains(@class, 'class_name')]/text()"
).get()
【讨论】:
以上是关于在 XPath 中获取(文本)的主要内容,如果未能解决你的问题,请参考以下文章
使用 XPath 在使用 python 的 <td> 单元格中获取文本
使用 Xpath (HtmlXPathSelector) 获取父子文本