我设法编写了一个从网页抓取数据的 Scrapy 项目,当我scrapy crawl dmoz -o items.json -t json
在命令行中使用 调用它时,它成功地将抓取的数据输出到 JSON 文件。
然后,我编写了另一个脚本,获取该 JSON 文件,加载它,更改数据的组织方式(我不喜欢它的默认组织方式),并将其作为第二个 JSON 文件输出。然后我使用 Django 的manage.py loaddata fixture.json
命令将第二个文件的内容加载到 Django 数据库中。
现在,我感觉到我会因为分三个单独的步骤执行此操作而被笑到大楼外,但我不太确定如何将它们放在一个脚本中。对于初学者来说,我不能让我的 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 项目,该脚本是否必须位于任何特定位置才能正常工作?