본문 바로가기

Programming/Python Web Crawler for intermediate learners

Web Crawler 011 - Adding Links to Queue - 링크를 웨이팅 리스트에 추가하기.



이번 시간에는 이전 시간에 이어서 웹페이지에서 찾아낸 링크들을 waiting list 에 추가하는 함수를 만들어 보도록 하겠습니다.


어떤 특정 사이트에 있는 전체 웹페이지들을 크롤링하기 위해서 해당 사이트의 홈페이지를 들어가고 거기서 링크를 타고 타고 가서, 해당 사이트의 모든 링크들을 찾을 것입니다. 이렇게 찾아낸 링크 값들을 waiting list 에 넣게 하는 스파이더와 waiting list 에 저장이 된 링크들을 각각 따로 크롤링 할 스파이더들을 만들어야 합니다. 이와 같은 일련의 과정중 전자인 찾은 링크들을 waiting list ( queue) 에 넣어주기 위한 함수를 만들것 입니다.


우선 아래와 같이 찾은 링크를 인자로 받는 함수를 선언해 줍니다. ▼

만약 전달 받은 링크의 url 값이 queue 에 있으면 continue 하게 합니다. ▼

만약 해당 url 이 이미 크롤링 한 url 이면, 역시 continue  합니다.▼

아래 코드는 상당히 중요한 부분입니다. 무엇이냐면, 만약 아래 코드가 존재하지 않는다면, 크롤링 하고자 하는 사이트에서 외부 사이트로 접속을 하는 링크를 발견하게 될 수도 있습니다. 그렇게 되면 인터넷 전체를 크롤링하게 만드는 형국이 되어 전세계 인터넷을 다~ 뒤지게 만들어 버립니다. 구글처럼 자원이 충분하고, 가용 컴퓨터 자원이 충분하다면 아래 코드를 없애도 (!!!) 됩니다. 


즉,  찾은 url 값이 특정 사이트 내의 값인지를 묻고 그렇다면 continue 하라는 의미입니다. 외부 사이트라면...... ㅎㅎㅎ 대략 난감하겠죠. ▼ 

그리고 마지막으로 이 url 값을 queue 에 추가해줍니다.▼

다음은 queue 에 있는 것들을 파일로 저장하게 하는 부분입니다. 2가지가 있는데, 하나는 waiting list 를 업데이트 하는 것이고, 다른 하나는 이미 크롤링 한 list 가 있는 파일을 업데이트 하는 것입니다. ▼



아래는 위에서 언급한 특정 사이트만을 크롤링하게 하기 위한다는 주석을 달아보았습니다. ▼

위에서 tistory.com 만을 크롤링 하게 하였는데, 이  또한 상당히 광범위합니다. 추후에 여기 블로그(https://creativeworks.tistory.com/)만 크롤링 할 수 있는 부분은 다른 코드에서 다루어 보도록 하겠습니다.