참고:개발자를 위한 파이썬(윤웅식저, 한빛미디어)
운영체제:윈도우10
버전:파이썬2.7.14
virtualenv사용
#가상환경 만듬
C:\pyStudy>python -m virtualenv p2venv
#가상환경 실행
C:\pyStudy>p2venv\Scripts\activate
(#가상환경 종료 >deactivate)
#가상환경 실행 확인
(p2venv) C:\pyStudy>
#스크래피 설치
(p2venv) C:\pyStudy>pip install scrapy
#설치 확인
(p2venv) C:\pyStudy>scrapy
#스크래피 프로젝트 생성
(p2venv) C:\pyStudy>scrapy startproject hanbit_media
# 프로젝트 디렉토리
(p2venv) C:\pyStudy>cd hanbit_media
(p2venv) C:\pyStudy\hanbit_media>
hanbit_media\itemps.py
설정해준 아이템들로 해당 정보를 수집
# -*- coding: utf-8 -*- import scrapy class HanbitMediaItem(scrapy.Item): # 책 이름 book_title = scrapy.Field() # 저자 이름 book_author = scrapy.Field() # 번역자 이름 book_translator = scrapy.Field() # 출간일 book_pup_date = scrapy.Feild() # ISBM book_isbn = scrapy.Field() pass
#스파이더 만들기
http,www를 생략해서 입력
(p2venv) C:\pyStudy\hanbit_media>
scrapy genspider -t crawl book_crawl hanbit.co.kr
hanbit_media\spiders 디렉토리에 생성됨
#스파이더 파일 수정
hanbit_media\spiders\book_crawl.py
# -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule class BookCrawlSpider(CrawlSpider): # 크롤러 이름. 실제 크롤링 실행시 사용 name = 'book_crawl' # 크롤러 실행 허용할 도메인 지정. 이외의 도메인 무시 allowed_domains = ['hanbit.co.kr'] # 시작점. 리스트로 지정해 한 번에 여러 웹 페이지 크롤링 시작 가능 start_urls = [ 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=001', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=002', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=003', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=004', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=005', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=006', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=007', 'http://hanbit.co.kr/store/books/category_list.html?cate_cd=008', ] # 규칙 설정 # 시작점의 모든 링크 검사 후 규칙에 맞는 링크를 정해진 콜백 메서드 실행 # follow = True 시 해딩 링크 대상으로 재귀적으로 앞 작업 반복 rules = ( Rule( # 크롤링할 링크 정규식으로 표현 # store/books/look.php?p_code=B123123 LinkExtractor(allow=r'store/books/look.php\?p_code=.*'), # 해당 링크 요정 전송 후 응답 오면 실행할 콜백 메서드 지정 callback='parse_item', # True 설정 시 응답에 다시한번 rules 적용, 재귀적으로 실행 follow=True), # 여러 규칙 설정 가능 Rule(LinkExtractor(allow=r'store/books/category_list\.html\?page=\d+&cate_cd=00\d+&srt=p_pub_date')) ) def parse_item(self, response): ''' rules를 통과한 링크에 요청 보내 받은 응답을 해당하는 Rule()의 콜백 메서드 실행 response 를 파라미터로 받고 XPath,CSS 선택자로 원하는 요소 추출''' # 설정한 아이템에 맞춰 딕셔너리 채우고 반환 i = {} # 책 이름 i['book_title']=response.xpath('//*[@id="container"]/div[1]/div[1]/div[1]/div[2]/h3/text()').extract() # 저자 이름 i['book_author']=response.xpath('//*[@id="container"]/div[1]/div[1]/div[1]/div[2]/ul/li[strong/text()="저자 : "]').extract() # 번역자 이름 i['book_translator']=response.xpath('//*[@id="container"]/div[1]/div[1]/div[1]/div[2]/ul/li[strong/text()="번역 : "]').extract() # 출간일 i['book_pub_date']=response.xpath('//*[@id="container"]/div[1]/div[1]/div[1]/div[2]/ul/li[strong/text()="출간 : "]').extract() # ISBM i['book_isbn']=response.xpath('//*[@id="container"]/div[1]/div[1]/div[1]/div[2]/ul/li[strong/text()="ISBN : "]').extract() return i
#크롤링 실행
해당 디렉토리에 접근후
scrapy 명령어를 이용하여 프로젝트가 활성화 되어 있는지 확인
(p2venv) C:\pyStudy\hanbit_media>scrapy crawl book_crawl -o book_list.csv -t csv
CSV형식으로 book_list.csv파일에 저장
--에러발생--
'공부 > etc' 카테고리의 다른 글
Netlify에 가비아에서 구매한 도메인 연결하기 (1) | 2021.04.19 |
---|---|
OAuth 2.0 인증 서버 (Authorization Server) (0) | 2020.06.06 |
메일 송수신 프로토콜(POP3, IMAP, SMTP) (0) | 2020.01.06 |