본문 바로가기

Python

파이썬으로 웹 크롤러(Web Crawler) 만들기 (2)

웹 크롤러를 개발하기에 앞서 준비해야할 것이 두가지가 있습니다. 


첫번째는 request를 날릴 url입니다. 무작정 우리가 아는 url에다 검색어를 붙인다고 해서 요청이 정상적으로 날아가는 것은 아닙니다. 원하는 검색결과를 반환해줄 url을 구성해야합니다. 일단 검색 결과가 나오게 될 사이트로 접속합니다. 저는 검색어 입력시 그에 관련된 Daum 뉴스 제목들을 가져오도록 하겠습니다. 접속하셨다면 원하는 검색어를 입력한 뒤 url을 확인해줍니다. 



위 url이 Daum 뉴스에서 비트코인이라는 검색결과가 나오게하는 url입니다. 맨끝의 'q=비트코인'이라는 부분이 검색어에 해당하는 파라미터라는 것을 쉽게 알수 있습니다. 하지만 url에서는 현재 몇번째 페이지의 결과인지는 표시가 안되어있습니다. 이럴 때는 두번째 페이지를 선택한 후 url을 확인해봅니다.



두번째 페이지의 url은 위와 같습니다. 어떻게 된게 최초 결과나왔을 때보다 url이 짧아진 것 같지만 결과만 잘 나오면 상관없습니다. url에서 'q=비트코인' 부분은 앞에서와 마찬가지로 검색어를 의미할 것입니다. 하지만 이번에는 'p=2'라는 페이지를 의미하는 파라미터가 추가되었습니다. 이게 페이지를 의미하는 파라미터인지 확인해보고 싶다면 'p=' 뒤의 숫자를 3이나 4 등 다른 숫자로 바꿔서 탐색해보면 됩니다. 검색을 통해 우리가 request를 날려야할 url을 확인했습니다. 검색어 앞부분 url + 검색어 + 페이지 파라미터 url + 페이지 숫자의 형태로 url을 구성하면 우리가 원하는 검색 결과를 얻을 수 있습니다. 이 url 구조는 어디까지나 Daum 뉴스를 바탕으로 구성된 것입니다. 현재 개발하고 싶어하는 웹 크롤러가 어느 사이트를 타겟으로 하고 있는지는 알 수 없지만 대부분의 사이트는 이와는 다른 모양의 url을 갖고 있을 것입니다. 제가 했듯이 직접 사이트에 접속하여 검색을 해보면서 url를 구성해보시기 바랍니다.


두번째는 원하는 결과를 가져올 태그명입니다. HTML로 구성된 웹 페이지는 그 내용이 태그로 관리되게 됩니다. Daum 뉴스도 마찬가지입니다. 그렇다면 그 태그로 감싸진 정보 중에서 우리가 원하는 정보가 포함되어 있다는 것을 예상해볼 수 있습니다. 문제는 어떤 태그에 어떤 class으로 특정되어있는지 모른다는 것입니다. 페이지가 어떤 태그로 어떻게 구성되어있는지는 크롬기준 우클릭하여 페이지 소스 보기를 선택하시거나 F12키를 눌러서 개발자 화면에서 확인하실수 있습니다.



개발자 화면에서 확인할 결과 링크를 의미하는 a 태그로 기사 제목이 감싸져있고 class는 f_link_b로 명명되어있습니다. 보통 이렇게 하나의 타겟만 확인하면 나머지 기사 제목들도 동일한 태그와 class로 구성되어있을 것이라고 추측해볼 수 있습니다.


url과 태그를 확인함으로써 비로소 개발을 위한 모든 준비를 마쳤습니다. 다음글부터 실제 코드를 구현해보도록 하겠습니다.