问题描述
最近,我开始致力于使用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
这个对吗? 我将如何从该蜘蛛运行中获取输出? 这种方法是否存在安全性问题?
1楼
是否可以选择S3? 我问是因为您已经在使用EC2。 如果是这样,您可以从S3中读取/写入。
我有点困惑,因为您提到了CSV和JSON格式。
如果您正在阅读CSV,则可以使用 。
无论哪种方式,您都可以在蜘蛛的__init__
或start_requests
方法中使用读取S3。
关于输出, 说明了如何使用提要导出将爬网的输出写入S3。
相关设置: