2017-06-13 71 views
0

我一直在寻找如何自动化和写入文件到Scrapy(CSV)的Excel。到目前为止,唯一可行的命令是繁琐的,手动的方法:Scrapy |自动化和写入Excel

scrapy crawl myscript -o myscript.csv -t csv 

我希望能够每一种格式化成更收集“行”的格式。此外,有什么办法可以使刮板自动化?理想情况下,我希望代码每天运行一次,并且希望能够在有关我的更新的更新时通知我自己。随着更新是一个相关的职位。

我的蜘蛛正在发挥作用,这里是代码:

import scrapy 

from scrapy.spiders import XMLFeedSpider 
from YahooScrape.items import YahooScrapeItem 

class Spider(XMLFeedSpider): 
    name = "Test" 
    allowed_domains = ["yahoo.com"] 
    start_urls = ('https://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOGL',) 
    itertag = 'item' 

    def parse_node(self, response, node): 
     item = {} 
     item['title'] = node.xpath('title/text()',).extract_first() 
     item['pubDate'] = node.xpath('link/pubDate/text()').extract_first() 
     item['link'] = node.xpath('link/text()').extract_first() 
     item['description'] = node.xpath('description/text()').extract_first() 
     return item 

我知道,要进一步出口/整理我的刮刀,我必须编辑管道设置(至少根据大多数我读过的文章)。

下面是我的pipelines.py代码:

class YahooscrapePipeline(object): 
    def process_item(self, item, spider): 
     return item 

我如何可以将其设置这样我就可以执行的代码,它会自动地写代码?

更新:我正在使用ScrapingHubs API,它使用shub-module来运行我的蜘蛛。它非常方便,而且易于使用。

+0

您可以在settings.py中启用管道并使用它。也可以使用启动CSV Feed Exporter – Verz1Lka

回答

0

Scrapy本身不处理定期执行或调度。它完全脱离了scrapy的范围。恐怕答案不会像你想的那么简单,而是需要的。

你能做什么是: 使用celerybeat允许基于crontab进度计划进行调度。 Running Celery tasks periodically (without Django)http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html应该让你开始。

我建议的另一件事是,你在scrapyd中托管你的蜘蛛。这会买你日志保留和一个不错的JSON API使用时,你会更高级:)。

堆栈溢出链接为您提供运行芹菜没有Django的示例代码(因为很多例子假设Django :))。记住要运行节拍调度程序,而不是直接执行任务 - 正如链接中指出的那样。

+0

了解。代码是否可以堆叠在我的蜘蛛中,或者我可以如何实现Celery?这似乎有点令人生畏 – Friezan

+0

这是我之前看到它直接调用你的蜘蛛完成的:https://stackoverflow.com/questions/22116493/run-a-scrapy-spider-in-a-celery-task – RabidCicada

+0

我会采取的方式是实际使用scrapyd和scrapyd-client。通过运行'scrapyd-deploy rabidtest -p rabidhire'将你的蜘蛛寄存在scrapyd中然后使用一个scrapyd-client的api从芹菜任务中运行你的蜘蛛。无需解决反应堆问题,并且解耦更好。 – RabidCicada

-2

至于你提到组织座位输出的问题,请注意你提到你熟悉如何使用出口商的事实,但同意创建一个自定义的CSV导出器,然后必须注册字段在您的设置中导出。它们在您的设置中显示的顺序确实将它们写入CSV文件的顺序。

如果我误解了问题的这一部分,而不是水平的话,你的意思是垂直对齐你的项目,如果你没有很多字段......做得很对,快速入侵添加正则表达式\ n在新行中你的蜘蛛项目化...可能必须先找到项目2然后添加新行或ORT的标签,然后你可以添加项目与你必须找到...我给一个例子,但这是存在这样一件很难做的事情......我会尽全力帮你解决。

至于安排一只蜘蛛.. 就像他们提到的那样,有Scrapyd,我与scrapymon一起使用...但是要警告,截至此刻,Scrappyd有一些兼容性问题,所以请记住,强迫自己为您的scrapyd项目创建一个虚拟环境。 有一个巨大的学习曲线来获取你想要的伟德。

与芹菜使用Django是byfar TOP解决方案,当你的刮擦变得严重....高学习曲线现在你必须处理服务器的东西,甚至更多的痛苦屁股它不是本地服务器,但老人。 ..交叉的速度,然后自定义整合或改变一个基于网络的gui.If你不想混乱的一切。我做了很长一段时间,使用scrapinghub ...得到他们的API ...你可以卷曲或使用他们提供的python模块...和cron schedlue你的蜘蛛,因为你认为适合你从PC ...刮远程完成,所以你保持资源的力量。