아래의 페이지의 데이터를 가져오겠다.
1)전체 가져오기
먼저 내가 만든 scrapy프로젝트의 item.py를 수정한다.
Field()함수를 사용해 클래스 형태의 데이터를 변수에 담는다.
scrapy.item.Field()구조로 되어 있으므로 class에 scrapy.item을 상속한다.
title, link, desc와 같이 각자 사용한 아이템을 정의한다.
그 다음 spider에서 실행할 코드파일 (.py)를 생성하고 아래와 같이 코딩한다.
name은 고유해야 하며 실행시 구분하는 용도이다.
def parse()함수가 실제 코드가 실행되는 부분이다. 정해진 url의 데이터가 response객체에
담겨진다. 아래는 html전체를 들고와 파일에 저장하는 코드이다.
커맨트 창에서 'scrapy crawl kang(위 코드의 name)
kang이라는 파일이 생성되었다. 확인해보면 html데이터를 전부 들고 왔다.2)Shell
또한 대화형인 shell을 통해 실시간으로 원하는 태그 등을 확인 할 수 있다.
터미널에서 "scrapy shell 확인할url" 을 치면 ">>>" 커맨드가 나온다.
전체가 또는 부분적으로 접근할 때는 selecter를 이용해 손쉽게 사용할 수 있다.
경로는 xpath, csspath 사용할 수 있다.
위의 p태그를 우클릭으로 xpath를 복사하면 다음과 같다.
/html/body/article/section[1]/div/div[1]/div/div/p
다시 shell로 돌아가서 현재 url의 title태그 모두를 보고 싶으면
>>>response.xpath('//title') -> 리스트 형태로 출력된다. '//'는 모든이라는 뜻
>>>response.xpath('//title').extract() ->데이터 형태로
>>>response.xpath('//title/text()') ->텍스트
>>>response.xpath('//title/text()').extract() ->텍스트만 데이터 형태로
3)부분데이터 가져오기
p태그만 출력해보자.
댓글 없음:
댓글 쓰기