如果标记中有其他html,如何从div标记中提取python中的文本?

2024-05-14 14:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用scrapy从HTML中提取一个ref.id:

<div class="col" itemprop="description">
  <p>text Ref.&nbsp;<span>220.20.34.20.53.001</span></p>
  <p>more text</p>
</div>

span和p标记并不总是存在。在

使用xpath选择器:

^{pr2}$

在这种情况下,只返回一个空字符串,因为标记中有HTML。在

现在尝试使用CSS选择器提取文本以便使用remove-tu标记:

>>> ''.join([remove_tags(w).strip()for w in response.css('div[itemprop="description"]::text').extract()]) 

这将返回一个空结果,因为我不知何故无法获取该项。在

无论div中是否有html<p>标记,我如何提取ref峎id。爬网的某些项没有<p>标记,也没有<span>,这是我第一次尝试使用xpath的地方。在


Tags: text标记divrefidhtml选择器description
2条回答

您不需要使用remove_tags,因为您可以通过选择器直接获得text

sel.css('div[itemprop=description] ::text')

这将从带有itemprop="description"div标记中获取所有内部文本,然后可以使用regex提取信息:

^{pr2}$

尝试从上一个表达式中删除::text

''.join([remove_tags(w).strip() for w in response.css('div[itemprop=description]').extract()]) 

但是如果只需要从html中提取220.20.34.20.53.001,为什么不使用response.css('div[itemprop=description] p span::text').extract()?在

甚至response.css('div[itemprop=description]').re(r'([\.\d]+)')。在

相关问题 更多 >

    热门问题