Python / scrapy - 使用长字符串打印对象

时间:2015-06-28 04:00:29

标签: python scrapy pprint

目前正与Scrapy合作,我想看看我在做什么。 但是,如果我想要打印一个对象,似乎Scrapy或者Python可能会切断更长的字符串:

    products = Selector(response).xpath('//div[@class="s-item-container"]')
    pprint ( products )

现在我收到了:

<Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-item-container"><div class'>,
<Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-item-container"><div class'>,
<Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-item-container"><div class'>,

在我的shell中 - 如何打印产品包含的所有内容? (HTML内容被删除)。

使用

print ( products) 

我收到:     [<Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-[<item-container"><div class'>, <Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-item-container"><div class'>, <Selector xpath='//div[@class="s-item-container"]' data=u'<div class="s-item-container"><div class'>,

几乎一样 - 只是乱糟糟的。 那么Selector(response).xpath可能是我的数据的简短版本的错误吗?

1 个答案:

答案 0 :(得分:2)

Scrapy Selector.xpath不返回字符串。它返回选择器对象的列表。当您打印选择器时,您正在打印对象的字符串表示。因此,您正在调用Selector ///*=============== Grid Mixins =================*/方法,正如您在源代码中看到的那样,默认情况下将对象1的一些选定属性修改为前40个字符。 要获取字符串列表,您需要调用__str__。所以你需要:

extract()

另请注意,您无需将响应转换为选择器。在最近的Scrapy版本Selector(response).xpath("//text()").extract() 中也可以使用。