我目前正在使用 Scrapy 编写一个网络爬虫,我想使用单个 XPath 查询获取每个 HTML 文档屏幕上显示的所有文本。
这是我正在使用的 HTML:
<body>
<div>
<h1>Main title</h1>
<div>
<script>var grandson;</script>
<p>Paragraph</p>
</div>
</div>
<script>var child;</script>
</body>
如您所见,在获取 body
标记内的文本时,我想要过滤一些 script
标记
这是我的第一个 XPath 查询及其结果:
XPath:/body/*//text()
结果:主标题/var 孙子;/段落/var child;
这不好,因为它还会获取 script
标记内的文本。
这是我的第二次尝试:
XPath:/body/*[not(self::script)]//text()
结果:主标题/var 孙子;/段落
此处,最后一个 script
标记(即 body
的子级)被过滤,但内部 script
未被过滤。
如何过滤所有 script
标记?提前致谢。
最佳答案
尝试
//*[not(self::script)]/text()
关于python-2.7 - 使用 XPath 选择 HTML 文档中除脚本节点之外的每个文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341207/