如何提取元素中<strong>标记之后的文本

时间:2018-11-06 11:36:14

标签: python web-scraping scrapy

尝试从看起来像这样的元素中提取文本:

<div><strong>"Beginning_of_text"</strong>"Rest_of_text"</div>

当我尝试使用Scrapy shell提取"Rest_of_text"

response.css("div::text").extraxt()

它什么也没给我。我是否需要使用一些特殊的命令来获取位于元素内<strong>标记之后的文本?

2 个答案:

答案 0 :(得分:2)

仅对于“ Rest_of_text”,您可以使用response.xpath('//div/strong/following-sibling::text()').get()

答案 1 :(得分:0)

鉴于您提供的文本,您提到的命令应返回以下内容:

['"Rest_of_text"']

如果strong标记之前有空格,例如:

<div>   <strong>"Beginning_of_text"</strong>"Rest_of_text"</div>

在这种情况下,如果执行相同的命令,则会得到以下信息:

['   ', '"Rest_of_text"']

但是如果在strong标记之后没有任何内容,则会得到以下提示:

['   ']

处理所有这些已知情况的最好方法是执行以下操作:

>>> full_text = ''.join(response.xpath('//div//text()').extract())
>>> before_strong, after_strong = full_text.split(response.css('strong::text').extract_first())

因此,在您提供的文本中,before_strong等于'',而after_strong等于'"Rest_of_text"',这似乎就是您想要的内容得到。