2

現在 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'>,

私のシェルで-製品に含まれるすべてをどのように印刷できますか? (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私のデータの短いバージョンを返すのはおそらく間違いでしょうか?

4

1 に答える 1

2

Scrapy Selector.xpath は文字列を返しません。セレクタ オブジェクトのリストを返します。セレクターを印刷すると、オブジェクトの文字列表現が印刷されます。したがって__str__、ソースコードでわかるように、デフォルトでオブジェクト1の選択された属性を表示するSelectorメソッドを呼び出して、htmlを最初の40文字にトリミングしています。文字列のリストを取得するには、 を呼び出す必要がありますextract()。したがって、次のものが必要です。

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

また、応答をセレクターに変換する必要がないことにも注意してください。最近の Scrapy バージョンresponse.xpathでも動作します。

于 2015-06-28T08:08:04.393 に答える