python xpath 空间没有被删除

标签 python xpath

我正在尝试从其中包含表格的 html 页面获取一些数据。我得到了 ugin xpath 的行列表,现在我试图在 tr 内的 td 的每个元素中获取 text(),这是 tr 的基本结构

<tr>
  <td>
    <a href="#" onclick="WhoisOrderDomain('bank'); return false;"> SHOP
                        </a>
  </td>
  <td>COUNTRY</td>
  <td class="text-right">1 038,00 USD</td>
  <td class="text-right">899,00 USD</td>
  <td class="text-right">899,00 USD</td>
  <td class="text-center">
<a class="btn btn-sm btn-info" href="#" onclick="WhoisOrderDomain('bank'); return false;"><i class="fa fa-shopping-cart"></i> Order</a>
                      </td>
                    </tr>

下面是我在 python 中的 xpath:

td_xpath = XPath("./td/a/text()[normalize-space()] | ./td/text()[normalize-space()]")

我得到这个输出:

['\r\n                          SHOP\r\n                        ', 'COUNTRY', '1038,00 USD', '899,00 USD', '899,00 USD', ' Order']

为什么不从第一个元素中删除空格?

另外如何使用 xpath 从价格中删除“,”和“USD”?

最佳答案

[td.xpath('normalize-space()')for td in tree.xpath('//tr/td')]

输出:

['SHOP', 'COUNTRY', '1 038,00 USD', '899,00 USD', '899,00 USD', 'Order']

[normalize-space()] 是一个删除空字符串的过滤器。如果需要获取标签下的字符串,请使用 normalize-space(tag)

使用stripreplace摆脱USD

[td.xpath('normalize-space()').strip(' USD') for td in tree.xpath('//tr/td')]

输出:

['HOP', 'COUNTRY', '1 038,00', '899,00', '899,00', 'Order']

编辑:

tree.xpath('//tr/td//text()')

输出:

['\n    ',                           # empty, discard
 ' SHOP\n                        ',
 '\n  ',                             # empty, discard
 'COUNTRY',
 '1 038,00 USD',
 '899,00 USD',
 '899,00 USD',
 '\n',                               # empty, discard
 ' Order',
 '\n                      ']         # empty, discard

如果[normalize-space()]影响字符串,则输出的'Order'将不包含开头的空格。

[] 只会像 bool 值一样过滤 false 值,不会改变值。

关于python xpath 空间没有被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931239/

相关文章:

python - 将公式转换为cnf python

python - PEM 格式的私钥有什么特别之处?

python - 为继承设计时为什么是 "use properties to hide functional implementation"?

python - Python 的 id() 有多独特?

python - 在线程之间使用 pydispatch

html - 带填充变量的 SVG 元素的 XPath?

jquery - 无法使用多个类和跳过元素将 CSS 重写为 XPATH

java - 在 YAML 嵌套数据中搜索值

python - 此代码应该使用从 scrapy 中抓取的链接来提取第一个 div 中的第二段,但我收到此错误

c# - 用于查找具有非法字符的属性的 XPath