Python 从文章中提取文本,如何过滤div中的标记?

Python 从文章中提取文本,如何过滤div中的标记?,python,beautifulsoup,scrapy,Python,Beautifulsoup,Scrapy,我们正在使用scrapy,希望获得位于特定分区中的文章正文。因此我们写了以下内容: article['body'] = response.xpath('string(//div[@itemprop="articleBody"])').extract_first() 问题是,有时我们会收到不想要的文本。 例如,我们从位于div中的一个样式标记中获取此文本: “#容器_14931537823{\n\t\t添加:5px 5px 0px 10px;” 我们可以使用beautifulsoup解析文章,但

我们正在使用scrapy,希望获得位于特定分区中的文章正文。因此我们写了以下内容:

article['body'] = response.xpath('string(//div[@itemprop="articleBody"])').extract_first()
问题是,有时我们会收到不想要的文本。 例如,我们从位于div中的一个样式标记中获取此文本: “#容器_14931537823{\n\t\t添加:5px 5px 0px 10px;”

我们可以使用beautifulsoup解析文章,但我们会得到相同的结果:

article['body'] = ''.join(soup.find_all('div',attrs={"itemprop" : "articleBody"})[0].text)
我们计算所有文本主体所在的div,然后应用一个方法(字符串或文本)来提取和连接文本,但是否可以排除该div中不需要的标记?
我们是否必须编写一个函数来清除提取的文本?

如果您想删除所有标签,可以尝试使用xpath的
text()
函数:

article['body'] = response.xpath('//div[@itemprop="articleBody"]//text()').extract_first()

除非里面有带Javascript的标记,否则它工作得很好。

如果使用xpath函数并将xpath表达式修改为:

article['body'] = ''.join(response.xpath('//div[@itemprop="articleBody"]/*[not(script)]//text()').extract())

什么是网站url?Scrapy有一个用于删除标记的
w3lib
。您可以将其用于项目加载器。url:我正在查看项目加载器的工作原理,很快会得到反馈。如果有人有一个好的链接或教程,则很难理解项目加载器上下文:)我们只想删除包含此类文本的不需要的标记:“\n请求”(['highcharts/4.1.9','highcharts-standalone'],function(){\n\n\t//FONCTIONS GLOBALES\n\tHighcharts.setOptions({\n\…”不起作用。很遗憾,语法错误:标识符中的字符无效请复制并重试。我编辑了xpath表达式,它有一些不可见的空格。现在应该是这样。