2017-02-16 3 views
0

최근에 나는 scrapy를 사용하여 웹 스크래퍼를 만드는 작업을 시작했습니다. 원래 scrapyd를 사용하여 로컬로 내 scrapy 프로젝트를 배포했습니다.Amazon EC2 리눅스 인스턴스에서 호스팅되는 scrapyd 인스턴스의 입출력

내가 내장 scrapy 프로젝트는 우리의 초기 단계에있는 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 

파일 다른

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 파일에서 데이터를 액세스하는 방법에 의존 이러한 스파이더 스파이더를 액세스하고 실행해야하는 애플리케이션을 구축하십시오. AWS EC2 Linux 인스턴스에서 scrapyd 인스턴스를 호스팅하기로 결정했습니다. AWS 로의 배포는 간단했습니다 (http://bgrva.github.io/blog/2014/04/13/deploy-crawler-to-ec2-with-scrapyd/).

AWS EC2 Linux 인스턴스에서 실행중인 scrapyd 인스턴스로 스크래핑 된 데이터를 입/출력하려면 어떻게해야합니까?

편집 : 나는이 정확 파일이

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를 읽는 경우 CSVFeedSpider을 사용할 수 있습니다. 어떤 경우 든 boto을 사용하여 거미의 __init__ 또는 start_requests 방법으로 S3에서 읽을 수 있습니다.

출력에 대해 this page은 피드 내보내기를 사용하여 S3에 크롤링 출력을 쓰는 방법을 설명합니다.

관련 설정 :

+0

이 내가 찾던입니다, 감사합니다. 내 질문을 편집하여 덜 혼란스럽게 만들었습니다. –