python xpath 如何过滤div中的script和style标签
爬取一个页面中的div,想获取div中的文字,我是这么写的:
selector.xpath('//div[@class="text-con"]').xpath('string(.)').extract()[0].lstrip().rstrip()
但在这个 div中包含一个 style标签和两个script标签,这样把样式和script中的代码也获取了,怎么过滤script标签和style标签,然后只获取文字内容,网上看了看说用not 但是我始终没成功,不知道是不是用法不对
回答
chrome可以直接生成xpath查询条件,可以试试
selector.xpath('//div[@class="text-con"]/text()').xpath('string(.)').extract()[0].lstrip().rstrip()
楼上+1,用xpath的/text()属性即可获取标签内的文本信息。推荐一个特别好的xpath教程,当年我就是跟着这个教程学的: http://zvon.org/xxl/XPathTutorial/General_chi/examples.html
如果单纯要删除<script>和<style>:
1)可以参考这篇文章,用strip_elements函数删除元素:
https://www.cnblogs.com/XD00/p/10626312.html
2)或者可以参考这篇的"方法二",用lxml的Cleaner来过滤:
https://www.jianshu.com/p/26e443a9edb6