仅返回段落的第一部分,直到遇到子标记?

时间:2019-06-25 15:07:24

标签: python scrapy

这是使用Scrapy。

我遇到以下类型的标记:

<p>Noting the presence of a footnote<sup>1</sup> is one common way for superscripts to be used.</p>

测试页:
https://html.com/tags/sup/

测试查询:

response.css('div.render p::text')[0].extract()

测试ItemLoader:

loader.add_css("text", "div.render p::text")

测试结果:

  

注意到有脚注

预期测试:

  

注意脚注的存在是上标使用的一种常见方式。

问题:

如何忽略段落标签而获得段落的全文?

1 个答案:

答案 0 :(得分:1)

我不知道scrapy是否具有忽略嵌套<sub>的适当选择器。我建议您使用re模块以忽略该子级。顺便说一下,从长远来看,这不是一个解决方案。您不应该使用正则表达式解析HTML。有关更多信息,请查看此线程RegEx match open tags except XHTML self-contained tags

尝试一下:

import re
def parse(self,response):
    extracted_p_tag=response.css('div.render p').get()
    ignored_sup=re.sub('<sup>(.*)</sup>','',extracted_p_tag)