目前正与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
可能是我的数据的简短版本的错误吗?
答案 0 :(得分:2)
Scrapy Selector.xpath不返回字符串。它返回选择器对象的列表。当您打印选择器时,您正在打印对象的字符串表示。因此,您正在调用Selector ///*=============== Grid Mixins =================*/
方法,正如您在源代码中看到的那样,默认情况下将对象1的一些选定属性修改为前40个字符。
要获取字符串列表,您需要调用__str__
。所以你需要:
extract()
另请注意,您无需将响应转换为选择器。在最近的Scrapy版本Selector(response).xpath("//text()").extract()
中也可以使用。