python-2.7 - 使用 XPath 选择 HTML 文档中除脚本节点之外的每个文本节点

标签 python-2.7 xpath scrapy

我目前正在使用 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/

相关文章:

c# - "Namespace ' x ' is not defined"尽管先调用 GetNamespacesInScope

python - Selenium Python Get Img SRC 返回实际图像数据

curl - Scrapyd:一旦我使用 scrapyd 安排它,我在哪里可以看到我的爬虫的输出

python - 将一个复杂的字符串 ('2,3-5,50-60,70' ) 分解到列表中

python - 你能覆盖一个由函数结果定义的变量而不先在 python 中清除吗?

android - Android 中具有两个子文本节点的节点的 Xpath 表达式

python - UTF-8编码、字典查找

python-2.7 - 使用 boto3 将文件上传到 S3 中的特定文件夹

python - 在python中形成包含整数数组、字符串列表的结构包

python - 使用 XPath 和 Scrapy/lxml 排除特定子节点