Python/scrapy - 打印带有长字符串的对象
Python/scrapy - print objects with long strings
目前正在使用 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
到 return 我数据的简短版本的错?
Scrapy Selector.xpath 没有 return 字符串。它 returns 选择器对象列表。当您打印选择器时,您正在打印对象的字符串表示形式。所以你正在调用 Selector __str__
方法,正如你在源代码中看到的那样,它显示了对象 1 的一些选定属性,默认情况下将 html 修剪为前 40 个字符。
要获取字符串列表,您需要调用 extract()
。所以你需要:
Selector(response).xpath("//text()").extract()
另请注意,您不需要将响应转换为选择器。在最近的 Scrapy 版本中 response.xpath
也可以工作。
目前正在使用 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
到 return 我数据的简短版本的错?
Scrapy Selector.xpath 没有 return 字符串。它 returns 选择器对象列表。当您打印选择器时,您正在打印对象的字符串表示形式。所以你正在调用 Selector __str__
方法,正如你在源代码中看到的那样,它显示了对象 1 的一些选定属性,默认情况下将 html 修剪为前 40 个字符。
要获取字符串列表,您需要调用 extract()
。所以你需要:
Selector(response).xpath("//text()").extract()
另请注意,您不需要将响应转换为选择器。在最近的 Scrapy 版本中 response.xpath
也可以工作。