본문 바로가기

Programming/Python Web Crawler for intermediate learners

Web Crawler 007 - Initialize the Spider information - 스파이더 초기화.

이제 스파이더에서 사용될 변수(variables)들을 선언해주었으니, 다음으로는 스파이더 클래스를 초기화 하도록 하겠습니다.


우선 스파이더 클래스 초기화를 위해 정의를 해주어야겠죠? 아래와 같이 선언을 해주고, 사용할 인자는 project_name, base_url, domain_name 을 넣어 주었습니다. 프로젝트 네임은 어느 사이트를 크롤링할지 초기에 정해줄 이름입니다. 그리고 해당 사이트의 기본 주소인 base_url 을 넣어 주었습니다. 그리고 중요한 것 중 하나인 domain_name 을 넣어주었는데, 만약 도메인 네임을 특정 웹 사이트내로 한정하지 않는다면, 인터넷 전체를 링크 타고타고해서 크롤링을 하게 됩니다. 정말 이러면 구글의 크롤러처럼 전세계 모든 웹사이트를 서치할 수 있게 되어 버릴지도 모릅니다. 이런것을 방지하고자 특정 사이트내만 크롤링 할 수 있게 도메인 네임을 설정해 줄 것입니다.

가령, 티스토리라면  blogname  을 먼저 사용하고 그 뒤에 tistory.com 을 사용하게 됩니다. 제 블로그 주소를 예로 설명을 하자면, creativeworks.tistory.com 인데, 여기서 도메인 주소는 tistory.com 이 됩니다. 물론 제 블로그 내만 크롤링하게 하려면 별도의 작업이 필요할 것입니다. 별도의 작업을 하지 않는다면, 전체 티스토리를 도메인으로 사용하는 모든 블로그를 크롤링 할 수도 있으니 주의하셔야 할 것입니다. 이는 추후 해당 내용이 나오면 다시 설멸을 하겠습니다.


각설하고, 말이 길어졌네요. 아래와 같이 초기화를 선언해 줍니다. ▼

클래스 스파이더의 project_name은 전달될 project_name 값을 넣게 하였습니다. ▼

클래스 스파이더의 base_url 값도 전달될 base_url 값이 들어가게 합니다. ▼

마찬가지로 클래스 스파이더의 도메인 네임도 전달될 인자 domain_name 값이 배정되게 합니다. ▼

다음으로는 클래스 스파이더의 queue_file 에는 'queue.txt' (waiting list: 크롤링을 해 줄 대기 명단) 값을 넣어줍니다. ▼

스파이드 클래스의 crawled_filed 에는 이미 크롤링이 완료된 값을 넣어줄 것이므로 'crawled.txt' 값을 넣어주게 합니다. ▼

스파이더 클래스가 생성되면 구동되는 boot() 함수를 호출하게 합니다. 이는 아래에 boot() 함수를 정의해 줄 예정입니다. ▼

그리고 어느 특정 웹사이트를 크롤링 해주려고 할 때, 가장 먼저 기본 url 값을 가지고 구동을 해줄 crawl_page() 함수도 호출하게 합니다. 이 또한 바로 아래에 함수를 정의해 줄 예정입니다. ▼

여기까지가 클래스 스파이더가 생성될 때의 초기화 과정입니다. To be continued....