Python Scrapy 튜토리얼 중 질문


안녕하세요. 스크래피 튜토리얼을 따라하며 공부 중에 모르는 부분이 있어 질문 드립니다. 코드는 아래와 같습니다.

def parse(self, response):
    for href in response.css("ul.directory.dir-col > li > a::attr('href')"):
        url = response.urljoin(href.extract())
        yield scrapy.Request(url, callback=self.parse_dir_contents)

위 함수코드 중 ul.directory.dir-col > li > a::attr('href')와 callback=self.parse_dir_contents에 대한 질문 인데요.

첫번째 css 경로인 것 같은데 ">" 기호로 "/"를 대신 한 것인지 궁금합니다. 그리고 callback=self.parse_dir_contents 이 부분이 이해가 잘 되지 않는데 간단하게 개념 설명 해주시면 감사하겠습니다. ^

인터넷 검색과 메뉴얼을 찾아보고 있는데 잘 모르겠네요. 답답한 맘에 질문 드립니다.


조회수 277


1 답변


첫번째 ul.directory.dir-col > li > a::attr('href')

위는 CSS Selector 입니다.

CSS Selector에서 E>F 와 같이 표현하면, F는 E의 자식 노드를 의미합니다. F가 여러개 있겠지만, 꼭 E 밑에 있는 F만 선택하는다는 의미입니다.

참고1참고2를 한번 참고해보세요.

두번째 callback=self.parse_dir_contents

참고3을 참고해보면

Now the parse() method only extract the interesting links from the page, builds a full absolute URL using the response.urljoin method (since the links can be relative) and yields new requests to be sent later, registering as callback the method parse_dir_contents() that will ultimately scrape the data we want. What you see here is the Scrapy’s mechanism of following links: when you yield a Request in a callback method, Scrapy will schedule that request to be sent and register a callback method to be executed when that request finishes.

url에 있는 문서에 포함된 추가적인 링크들을 찾기 위한 함수인 것 같습니다. 위 참고3의 예제에서 보면, url로 부터 얻은 response에서 하위 링크 정보를 추출하고, 다음 크롤링 대상으로 예약하는 것으로 보입니다.

  • 2016년 04월 30일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 04월 30일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close