반응형
전 시간에 item 까지 만들어 보았습니다.
혹시 이전 내용을 보지 않으셨다면 아래 링크를 클릭해주세요.
(파이썬) Scrapy를 이용한 웹 데이터 크롤러(Crawler) 만들기 -1
5. Spider 파일 만들기
Spider 파일은 정보를 얻기위한 메인코드입니다.
companycrawler -> spiders 폴더 아래에
"companycrawler_spider.py" 파일을 만들어 줍니다.
그 후 코드를 아래와 같이 코드를 작성해주시면 됩니다.
# -*- coding: utf-8 -*-
import scrapy
import sys
from scrapy.spiders import Spider
from scrapy.selector import HtmlXPathSelector
from companycrawler.items import CompanycrawlerItem
from scrapy.http import Request
from scrapy.selector import Selector
reload(sys)
sys.setdefaultencoding('utf-8')
class companycrawler_Spider(scrapy.Spider):
#1번만 실행
def start_requests(self):
for i in range(1,5,1):
yield scrapy.Request("http://www.jobkorea.co.kr/starter/?schPart=10016&Page={0}".format(i),self.parse)
#아이템 parse
def parse(self, response):
for colum in response.xpath('//div[@class="filterListArea"]/ul/li') :
item = CompanycrawlerItem()
item['context'] =colum.xpath('div/div[@class="tit"]//a/span/text()').extract_first()
yield item
|
cs |
start_requests : 처음 시작 시 1번만 호출됩니다. 현재 4개 페이지를 parse함수에 요청하고 있습니다.
parse : 요청받으면 호출되며 아이템을 찾아 결과를 계속 리턴합니다.
(yield - return과 비슷하지만 결과를 리턴하고 종료하지 않고 계속 실행)
6. PipeLine 만들기
PipeLine은 yield나 return으로 받은 아이템 결과를 json,xml,csv,database,mail 등등 다양한 파일로 결과물을 생성시킬 수 있습니다.
현재 예제에서는 "cvs" 즉 Excel파일로 결과를 확인하겠습니다.
현재 프로젝트에서 생성되어 있는 "pipelines.py"를 열고 아래와 같이 코드를 작성합니다.
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
from __future__ import unicode_literals
from scrapy.exporters import JsonItemExporter, CsvItemExporter
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class CompanycrawlerPipeline(object):
def __init__(self):
self.file = open("CompanyCrawlerFile.csv", 'wb')
self.exporter = CsvItemExporter(self.file, encoding='euc-kr')
self.exporter.start_exporting()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
def spider_closed(self, spider):
self.exporter.finish_exporting()
|
cs |
__init__ : 처음 한번만 실행합니다.
process_item(self,item,spider) : 결과로 리턴된 아이템을 처리합니다.
spider_closed(self,spider) : spider가 종료되면 호출합니다.
7. Setting
현재 프로젝트의 setting을 설정할 수 있습니다.
현재 반드시 setting해야할 사항은 Item과 PipeLine을 연결시키는 것입니다.
현재 프로젝트의 "settings.py" 파일을 열으시고
위 사진과 같이 주석되어 있는 부분을 풀어주시고 "CompanycrawlerPipeline"으로 바꿔줍니다.
그러면Item과 Pipeline이 연결됩니다.
오른쪽 "300" 이라는 숫자는 실행 순서를 나타냅니다. 낮은값에서 높은값으로 이동하며 0~1000까지 범위를 설정할 수 있습니다.
8. 실행 & 결과
Command창에
"scrapy crawl companycrawler" 를 입력하여 실행시킵니다.
그러면 현재 폴더에 "CompanyCrawlerFile"의 Excel 파일이 만들어져 있습니다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
(Python) django로 홈페이지 제작 - 2 (0) | 2018.12.02 |
---|---|
(Python) django로 홈페이지 제작 - 1 (0) | 2018.12.02 |
(파이썬) Scrapy를 이용한 웹 데이터 크롤러(Crawler) 만들기 -1 (0) | 2018.12.01 |
(파이썬Python) Scrapy VS BeautifulSoup (웹 크롤링 패키지) (0) | 2018.12.01 |
(파이썬Python) no module named win32api 오류 (0) | 2018.12.01 |