본문 바로가기

Programming/Python Web Crawler for intermediate learners

Web Crawler 002 - Creating Crawled files and Queue

이번 시간에는 지난 시간에 프로젝트(폴더)를 만드는 코딩에 이어, 웹사이트를 크롤링할 때 크롤링해야 할 웹페이지들의 URL 값을 가지고 있어야 하는데, 그렇게 하기 위해서 queue를 만들어 긁어 올 웹페이지 주소를 넣어 두려고 합니다. 이렇게 queue에 저장된 웹페이지 URL 을 가지고 다 긁어왔으면 해당 URL을 crawled 로 넘겨주어 더 이상 중복 크롤링하지 않게 하려고 합니다. 말보다는 코딩을 보는게 더 빠를거라 봅니다. 시작해 볼까요~? 히위~꼬우~!


지난 시간에 만든 부분에 아래와 같이 주석을 달아 주었습니다. 그리고 이번에 만들 부분에 주석도 함께 넣었습니다. 프로젝트 이름과, 기본 주소를 인자로 받는 파일을 만들어 줄 함수를 아래와 같이 정의하겠습니다. ▼

기본 URL 을 가지고 어떤 웹페이지를 방문하였을 때, 해당 웹에서 링크를 타고 타고~ 들어갈 수 있는 또 다른 페이지들이 많이 있습니다. 이렇게 타고갈 링크들(웹페이지들)을 queue.txt 라는 파일에 저장을 하려고 합니다. 프로젝트 이름과 queue.txt를 하나로 하는 queue를 정의해 주었습니다.▼

마찬가지로 queue에서 크롤링해야할 웹페이지를 가지고 와서 크롤링이 끝나면 crawled.txt에 넘겨줄 예정인데, 위와 같이 crawled 에 프로젝트 이름과 crawled.txt 를 붙여주었습니다.▼

이렇게 만든 queue라는 파일이 존재하지 않는다면, 파일을 만들어 주려고 합니다. 조건에 해당하는 코드입니다. ▼

위 조건을 만족한다면, 파일을 만들라고 함수를 호출하게 합니다. ▼

이번에는 crawled 라는 이름의 파일이 존재 하지 않는다면 ▼

마찬가지로 파일을 만들어 주려고 합니다. 여기서 두 번째 인자는 공백으로 두었습니다. 이는 전달해 줄 데이터 값이 없기 때문입니다.▼

이제 위에서 호출을 하게 될 함수인 'write_file()' 를 만들어 주어야 할 차례입니다. 'write_file()'함수는 첫 번째 인자로 path, 두 번째 인자로 데이터 값을 가지게 됩니다. ▼

path를 읽기모드('w')로 열어서 f에 넣어줍니다.▼

이렇게 열어 둔 f 에 data 를 쓰기모드로 넣어줍니다.▼

다 작성을 하였으니, 닫아 주어야 합니다. 즉, 열고-쓰고-닫고. 이런 단계를 거치는 거~~~~죠.▼

길어지면 글을 읽는 사람도 지루해지지만, 쓰는 사람도 지루해지는 것 같아 이쯤에서 이번편은 마치겠습니다. 이번 시간까지는 프로젝트(각각의 폴더)를 만들고 크롤링할 링크들을 찾아(추후에 추가할 예정)주어서 각각의 웹 페이지 URL을 파일에 넣어주고, 나중에 크롤링을 마친 웹URL은 crawled에 넣어주게 하는 일련의 과정 중 일부를 마쳤습니다.