python
  • scrapy
  • pprint
  • 2015-06-28 52 views 1 likes 
    1

    当前正在使用Scrapy,我想看看我在做什么。 但它好像Scrapy或可能的Python切断长字符串,如果我想打印一个对象:Python/scrapy - 用长字符串打印对象

    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'>, 
    
    在我的壳

    - 我怎么能打印的一切,产品包含? (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

    这绝对不是Python的问题,我只是打印了一个返回长度为1000的字符串的对象。 – Rishav

    +1

    通过简单的'print(products)'得到什么? – Rishav

    +0

    这对于'pprint'也不是问题。 – Rishav

    回答

    2

    Scrapy Selector.xpath不返回字符串。它返回选择器对象的列表。当您打印选择器时,您正在打印对象的字符串表示形式。所以你打电话给选择器__str__方法,你可以在源代码中看到显示一些选定的属性对象1默认情况下将html修剪为前40个字符。 要获取字符串列表,您需要拨打extract()。因此,你需要:

    Selector(response).xpath("//text()").extract() 
    

    另外请注意,你不需要转换应对选择。在最近的Scrapy版本response.xpath也将工作。

    +0

    完美 - 谢谢你的好解释。 现在我得到了u'asfasfasfd',正如我刚刚通过docs计算出来的那样是一个unicode字符串,但是在MongoDB中它没有u保存,就像字符串一样: 'Selector(response).xpath(“ // text()“)。extract()[0]' So ..列表的第一项。 – Chris

    相关问题