2020. 10. 22. 19:17ㆍAutoBot
목차
- Crawler
- 크롤러란?
- 프로젝트 제작
- 끝으로
다운로드
들어가기 전
velog.io/@mowinckel/%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-I
🏭 '웹 크롤러' 좀 그만 만들어라
아무튼 그만 만들어라.
velog.io
크롤러에 대한 칼럼(?)입니다. 기본적인 크롤러의 설명도 자세히 나와있고 무분별한 크롤러 포스팅에 대한
비판적인 시선도 나와있습니다.
개발 과정 포스팅을 하면서 저의 부족한 점 또한 많이 발견해서.. 뜨끔했던 포스팅이네요. 한 번씩 읽어보는 것도 좋을 거 같습니다.
저 또한 공부하며 만든 프로젝트입니다.
많이 부족하고 부실한 코드지만 조금이나마 도움이 됐으면 하는 마음에 포스팅합니다!
최대한 이해하기 쉽게 작성했지만 부족한 점은 댓글로 남겨주세요!
피드백을 받고 수정하겠습니다!
Crawler?
조직적, 자동화된 방법으로 월드 와이드 웹(WWW)을 탐색하는 컴퓨터 프로그램입니다.
네이버 실시간 검색어, OP.GG 데이터 등 특성 사이트의 정보를 분석하기 쉬운 형태로 가공하는 작업을 수행하죠.
우리는 '코로나 맵' 사이트를 크롤링해서 우리나라의 코로나 현황을 얻는 크롤러 프로그램을 제작해 보려 합니다.
코로나바이러스감염증-19(COVID-19)
코로나바이러스감염증-19 정식 홈페이지로 발생현황, 국내발생현황, 국외발생현황, 시도별발생현황, 대상별 유의사항, 생활 속 거리 두기, 공적마스크 공급현황, 피해지원정책, 홍보자료, FAQ, 관
ncov.mohw.go.kr
Crawler - 프로젝트 제작
1. 프로젝트 생성
Windows Forms 앱(. NET Framework) 템플릿으로 프로젝트를 생성합니다.
프로젝트명은 'WebCrawler_Project'로 설정하겠습니다.
2. 패키지 추가
도구 > NuGet 패키지 관리자 > 설루션 용 NuGet 패키지 관리
패키지 추가란 우리가 프로그램 제작에 좀 더 편리한 외부 도구를 추가하는 작업입니다.
우리가 추가할 패키지는 총 1가지로
* HtmlAgilityPack : Html 데이터 조작에 더 편리한 기능을 제공합니다.
3. 프로젝트 UI
메인 폼 UI입니다.
* 테스트 프로젝트여서 모두 Label로 구성했습니다.
* 라벨의 이름과 (Name)은 동일합니다!
4. 코드
Form1.cs
* 코드에 대한 궁금점은 댓글로 남겨주세요!
위 코드를 작성 후 F5를 눌러서 실행시켜 줍니다.
사이트에 들어가 현재 현황과 동일한지 확인합니다.
5. 코드 설명
Form1_Load()
크롤러의 기본은 웹 페이지 태그명을 분석하는 것에서 시작합니다.
'크롬'으로 코로나 맵 홈페이지에 접속합니다.
그런 다음 Ctrl+Shift+C를 눌러서 '데브 창'을 활성화합니다.
마우스 커서 위치에 따른 id를 보여줍니다.
이제 우리가 만들 수치에 마우스를 가져가 확인해 보죠.
<ul class="liveNum"> 밑에 우리가 원하는 확진자, 격리 해제, 치료 중, 사망인원이 보입니다.
즉, 저 클래스 한 덩어리만 가져오면 우리가 원하는 정보를 가져올 수 있는 거죠.
그리고 빨간색 줄을 보시면 전부 <li>이라는 태클에 칸칸이 묶여있습니다.
그리고 <li> 안에 <tit>은 제목 <num>은 수치라는 공통점이 있죠.
코드로 확인해 봅시다.
1.
첫 번째로 확인했던 <ul class="liveNum">의 데이터를 가져옵니다.
2.
두 번째로 확인했던 <li> 태그들을 가져옵니다.
SelectSingleNode와 SelectNodes의 차이를 주의합니다.
* SelectSingleNode : 맨 처음 검색된 1개만 가져옵니다.
* SelectNodes : 모두를 배열로 가져옵니다.
3.
가져온 <li> 배열을 한 번씩 순회하며 <tit>과 <num>을 가져옵니다.
중간에 Regex.Replace의 역할은 숫자만! 가져오게 됩니다. 궁금하시면 주석(//) 표시를 하고 차이를 보는 것도 좋겠네요.
그런 다음 List에 저장해줍니다.
4.
그런 다음 각 Label의 Text를 변경해 주는 거죠.
끝으로
드디어 포스팅이 종료됐네요..!
많이 부족한 포스팅이었는데 도움이 됐으면 좋겠네요.