当前位置: 代码迷 >> python >> Amazon EC2 linux实例上托管的scrapyd实例的输入/输出
  详细解决方案

Amazon EC2 linux实例上托管的scrapyd实例的输入/输出

热度:49   发布时间:2023-06-16 10:27:19.0

最近,我开始致力于使用scrapy构建卷筒纸刮板。 最初,我是使用scrapyd在本地部署我的scrapy项目的。

我构建的草率项目依赖于从CSV文件访问数据才能运行

 def search(self, response):
    with open('data.csv', 'rb') as fin:
        reader = csv.reader(fin)
        for row in reader:
            subscriberID = row[0]
            newEffDate = datetime.datetime.now()
            counter = 0
            yield scrapy.Request(
                url = "https://www.healthnet.com/portal/provider/protected/patient/results.action?__checkbox_viewCCDocs=true&subscriberId=" + subscriberID + "&formulary=formulary",
                callback = self.find_term,
                meta = {
                    'ID': subscriberID,
                    'newDate': newEffDate,
                    'counter' : counter
                    }
                )

它将抓取的数据输出到另一个CSV文件

 for x in data:
        with open('missing.csv', 'ab') as fout:
            csvwriter = csv.writer(fout, delimiter = ',')
            csvwriter.writerow([oldEffDate.strftime("%m/%d/%Y"),subscriberID,ipa])
            return

我们正处于构建需要访问和运行这些爬虫的应用程序的初始阶段。 我决定将我的scrapyd实例托管在一个AWS EC2 linux实例上。 部署到AWS很简单( )。

我如何向在AWS EC2 linux实例上运行的scrapyd实例输入/输出scraped数据?

编辑:我假设传递文件看起来像

curl http://my-ec2.amazonaws.com:6800/schedule.json -d project=projectX -d spider=spider2b -d in=file_path

这个对吗? 我将如何从该蜘蛛运行中获取输出? 这种方法是否存在安全性问题?

是否可以选择S3? 我问是因为您已经在使用EC2。 如果是这样,您可以从S3中读取/写入。

我有点困惑,因为您提到了CSV和JSON格式。 如果您正在阅读CSV,则可以使用 。 无论哪种方式,您都可以在蜘蛛的__init__start_requests方法中使用读取S3。

关于输出, 说明了如何使用提要导出将爬网的输出写入S3。

相关设置: