使用 Xpath 的 string() 函数,如何忽略特定标签?
Using string() function of Xpath, how to ignore specific tags?
我正在使用 Scrapy 选择器,我有一个 HTML 这样的:
<p class="TweetTextSize TweetTextSize--normal js-tweet-text tweet-text" lang="pt" data-aria-label-part="0">O
<a href="/MInfraestrutura" class="twitter-atreply pretty-link js-nav" dir="ltr" data-mentioned-user-id="523331076">
<s>@</s><b>MInfraestrutura</b></a> <a href="/tarcisiogdf" class="twitter-atreply pretty-link js-nav" dir="ltr"
data-mentioned-user-id="1078618844007157761"><s>@</s><b>tarcisiogdf</b></a> prevê investimentos de R$ 30 bilhões
para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha
rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.
<a href="https://twitter.com/jairbolsonaro/status/1226108292482682881"
class="twitter-timeline-link u-hidden"
data-pre-embedded="true"
dir="ltr">pic.twitter.com/wa8X7gvOOc
</a>
</p>
我想深入每个标签并提取其文本,忽略带有 class "twitter-timeline-link u-hidden" 的锚点内的文本。
所以我想忽略以下文本:pic.twitter.com/wa8X7gvOOc
我试过的:
node.xpath('//*[not(self::a[@class="twitter-timeline-link u-hidden"])]').xpath('string()').get()
结果:
'O @MInfraestrutura @tarcisiogdf prevê investimentos de R$ 30 bilhões para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.pic.twitter.com/wa8X7gvOOc'
预期:
'O @MInfraestrutura @tarcisiogdf prevê investimentos de R$ 30 bilhões para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.'
有谁知道如何使用 string()
函数忽略标签。
或者任何其他方式来排除某些节点内具有特定标签的锚点?
谢谢
尝试将其更改为:
node.xpath('//*[not(self::a[@class="twitter-timeline-link u-hidden"])]/text()').extract()
这应该会给你一个没有 pic.twitter.com/wa8X7gvOOc
的输出。
我正在使用 Scrapy 选择器,我有一个 HTML 这样的:
<p class="TweetTextSize TweetTextSize--normal js-tweet-text tweet-text" lang="pt" data-aria-label-part="0">O
<a href="/MInfraestrutura" class="twitter-atreply pretty-link js-nav" dir="ltr" data-mentioned-user-id="523331076">
<s>@</s><b>MInfraestrutura</b></a> <a href="/tarcisiogdf" class="twitter-atreply pretty-link js-nav" dir="ltr"
data-mentioned-user-id="1078618844007157761"><s>@</s><b>tarcisiogdf</b></a> prevê investimentos de R$ 30 bilhões
para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha
rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.
<a href="https://twitter.com/jairbolsonaro/status/1226108292482682881"
class="twitter-timeline-link u-hidden"
data-pre-embedded="true"
dir="ltr">pic.twitter.com/wa8X7gvOOc
</a>
</p>
我想深入每个标签并提取其文本,忽略带有 class "twitter-timeline-link u-hidden" 的锚点内的文本。
所以我想忽略以下文本:pic.twitter.com/wa8X7gvOOc
我试过的:
node.xpath('//*[not(self::a[@class="twitter-timeline-link u-hidden"])]').xpath('string()').get()
结果:
'O @MInfraestrutura @tarcisiogdf prevê investimentos de R$ 30 bilhões para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.pic.twitter.com/wa8X7gvOOc'
预期:
'O @MInfraestrutura @tarcisiogdf prevê investimentos de R$ 30 bilhões para ampliar a malha ferroviária do país nos próximos 6 anos. Estudo de 2018 da Fundação Dom Cabral, a malha rodoviária é utilizada para o escoamento de 75% da produção no país. As ferrovias respondem por 5,4%.'
有谁知道如何使用 string()
函数忽略标签。
或者任何其他方式来排除某些节点内具有特定标签的锚点?
谢谢
尝试将其更改为:
node.xpath('//*[not(self::a[@class="twitter-timeline-link u-hidden"])]/text()').extract()
这应该会给你一个没有 pic.twitter.com/wa8X7gvOOc
的输出。