如何使用XPath提取同一标签下的所有文本?

时间:2017-07-05 01:05:50

标签: python xml xpath web-crawler text-extraction

<span rel="v:addr">
<span property="v:region">
  <a href="https://tabelog.com/en/tokyo/">
    123
  </a>
</span>
<span property="v:locality">
  <a href="https://tabelog.com/en/tokyo/A1317/A131710/rstLst/">
    456
  </a>
    <a href="https://tabelog.com/en/rstLst/">
      789
    </a>
  10
</span>
<span property="v:street-address">

</span>
</span>

我想在没有任何空格的情况下提取span标记内的文本,并在最后将其作为单个字符串。

我想要这个结果:

12345678910

这是我的代码:

'AddressLocalityJap':"".join(response.xpath('normalize-space(//*[@id="anchor-rd-detail"]/section[1]/table/tbody/tr[4]/td/p[2]/span/span[2]//text()').extract())

2 个答案:

答案 0 :(得分:1)

您可以按StartAt获得所有范围。并使用//span/span获取每个范围中的文本。并使用正则表达式替换所有空白字符。

text_content()

答案 1 :(得分:0)

Pure XPath 1.0解决方案

这个XPath,

translate(string(normalize-space()), ' ', '')

将返回

12345678910

根据要求提供HTML。