본문 바로가기

Python

Scrapy 간단 Selector

크롤링하고 싶은 데이터가 있는 사이트 상의 HTML 문서에서 데이터 선택하는 방법


selector 방식에는 css, xpath가 있다.


response.xpath('//base/@href').extract()의 의미는 parse 함수에서 사이트를 돌고 난 뒤 response를 반환하는데 이 response에는 사이트 문서가 있다. 문서를 xpath라는 selector를 사용해서 태그에 접근한다는 것이다. //의 의미는 모든 자식을 의미한다. //base이니까 모든 base 태그를 선택하는 것이다. /@href는 자식 중에 속성이 href인 것을 선택하는 것이다. extract()는 선택한 것을 리스트 형식으로 추출한다는 것이다.


scrapy 문서상에선 extract_first() 대신 get()을 쓰고 extract() 대신 getall()을 쓰라고 한다.


response.xpath('//base/@href').extract()는 response.css('base::attr(href)').extract()와 같다.


resopnse.xpath('//a[contains(@href, "image")]/@href').extract()는 response.css('a[href*=image]::attr(href)').extract()와 같다.


response.xpath('//a[contains(@href, "image")]/img/@src').extract()는 response.css('a[href*=image] img::attr(src)').extract()와 같다.