首页 > 解决方案 > SCAPY 不打印终端中的所有项目

问题描述

我在终端中使用 SCAPY Shell 使用此命令,但它没有打印所有项目。

scrapy shell https://access.redhat.com/errata/RHSA-2017:0621

response.xpath('normalize-space((//div[contains(@class, "tab-pane")]/ul)[2]/li/text())').getall()

它只打印第一项。

标签: pythonscrapyscrapy-splashscrapy-shell

解决方案


normalize-space()仅适用于单个节点。如果你给它一个节点集,它将返回从第一个节点产生的值。

如果你想将它应用到多个节点,你可以这样做(pp只是一个漂亮的打印功能):

>>> products = response.xpath('(//div[contains(@class, "tab-pane")]/ul)[2]/li').xpath('normalize-space()').getall()
>>> pp(products)
[
    'Red Hat Enterprise Linux Server 6 x86_64',
    'Red Hat Enterprise Linux Server 6 i386',
    'Red Hat Enterprise Linux Workstation 6 x86_64',
    'Red Hat Enterprise Linux Workstation 6 i386',
    'Red Hat Enterprise Linux Desktop 6 x86_64',
    'Red Hat Enterprise Linux Desktop 6 i386',
    'Red Hat Enterprise Linux for Power, big endian 6 ppc64',
    'Red Hat Enterprise Linux for Scientific Computing 6 x86_64'
]

推荐阅读