Web ページからデータをスクレイピングする Scrapy プロジェクトを作成することができましscrapy crawl dmoz -o items.json -t json
た。コマンド ラインでそれを呼び出すと、スクレイピングされたデータが JSON ファイルに正常に出力されます。
次に、その JSON ファイルを取得してロードし、データの編成方法を変更して (デフォルトの編成方法が気に入らなかったため)、別の JSON ファイルとして出力する別のスクリプトを作成しました。次に、Django のmanage.py loaddata fixture.json
コマンドを使用して、2 番目のファイルの内容を Django データベースに読み込みます。
さて、これを 3 つの別々のステップで行うことで建物から笑われることになると感じていますが、すべてを 1 つのスクリプトにまとめる方法がよくわかりません。まず第一に、Scrapy プロジェクトで自分のデータを思い通りに出力させることができないというのは、本当にばかげているように思えます。Feed exports
しかし、データを出力する「デフォルト」の方法を変更するコードをどこに配置すればよいでしょうか? それは私のpipelines.py
ファイルに入るだけですか?
次に、Python スクリプト内からスクレイパーを呼び出して、結果の JSON フィクスチャをデータベースにロードしたいと考えています。それは次のようなものを置くのと同じくらい簡単ですか:
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log
from testspiders.spiders.followall import FollowAllSpider
spider = FollowAllSpider(domain='scrapinghub.com')
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()
スクリプトの先頭に、次のようなものを続けます。
from django.something.manage import loaddata
loaddata('/path/to/fixture.json')
? 最後に、このスクリプトが適切に動作するために、私の Django プロジェクトと Scrapy プロジェクトの両方に関連して、このスクリプトが存在しなければならない特定の場所はありますか?