2

他のアイテム クラスを分析して構築する必要があるランク フィールドを持つアイテムがあります。データベースやその他のバックエンドを使用してそれらを保存したくありません-現在スクレイピングされているすべてのアイテムにアクセスし、それらに対していくつかの itertools マジックを実行する必要があるだけです-スパイダーが終了した後、データをエクスポートする前にこれを行うにはどうすればよいですか (ランクフィールドが勝ちました)空にしないでください)?

4

3 に答える 3

4

信号が役立つかもしれないと思います。私はここで似たようなことをしました

https://github.com/dm03514/CraigslistGigs/blob/master/craigslist_gigs/pipelines.py

ちょっとハッキーなようですが、スパイダーで、すべてのScrapedアイテムを格納するプロパティを作成できます。パイプラインで、スパイダークローズ信号で呼び出されるメソッドを登録できます。このメソッドは、パラメーターとしてスパイダーインスタンスを取ります。その後、すべてのスクレイプされたアイテムを含むスパイダープロパティにアクセスできます

于 2012-10-07T13:50:01.937 に答える
1

このパイプラインは、すべてのアイテムにランクがあることを確認します。

class MyPipeline(object):

    def process_item(self, item, spider):
        item['rank'] = item.get('rank') or '1'
        return item
于 2012-10-13T02:30:51.517 に答える