尝试从看起来像这样的元素中提取文本:
<div><strong>"Beginning_of_text"</strong>"Rest_of_text"</div>
当我尝试使用Scrapy shell提取"Rest_of_text"
时
response.css("div::text").extraxt()
它什么也没给我。我是否需要使用一些特殊的命令来获取位于元素内<strong>
标记之后的文本?
答案 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"'
,这似乎就是您想要的内容得到。