python - PyQuery:只获取元素的文本,而不是子元素的文本

标签 python screen-scraping pyquery

我有以下 HTML:

<h1 class="price">
 <span class="strike">$325.00</span>$295.00
</h1>

我想拿出 295 美元。但是,如果我简单地使用 PyQuery 如下:

price = pq('h1').text()

我得到了两个价格。

Extracting only direct child text for an element in jQuery看起来相当复杂 - 有没有办法在 PyQuery 中做到这一点?

目前我正在单独提取第一个价格,然后使用替换将其从文本中删除,这有点繁琐。

感谢您的帮助。

最佳答案

我认为没有一种干净的方法可以做到这一点。至少我找到了这个解决方案:

>>> print doc('h1').html(doc('h1')('span').outerHtml())
<h1 class="price"><span class="strike">$325.00</span></h1>

如果不想保留 span 标签,可以使用 .text() 而不是 .outerHtml()。

删除第一个要容易得多:

>>> print doc('h1').remove('span')
<h1 class="price">
  $295.00
</h1>

关于python - PyQuery:只获取元素的文本,而不是子元素的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122262/

相关文章:

jquery - 使用python中的pyquery删除html中的所有隐藏元素

java - 避免与 JSoup 进行无空格连接

python - 无法使用 PyQuery 解析大 HTML

python - 以列表年和月的形式获取日期之间的差异

python - 用 Kivy 居中和包裹

Java 和 SetWindowDisplayAffinity

.net - 使用 .NET 通过 SSL 抓取屏幕

Python/PyQuery : Unable to find vcvarsall. bat ?

python - Flask_login 是否自动设置 "next"参数?

python - 安装软件包 (conda) 会导致 ImportError : Library not loaded