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

时间:2013-01-02 12:42:42

标签: 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中完成它?

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

>>> 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>