HANA -J
WIL [항해 99] 1주차 - 크롤링 본문
> 2021/11/01 - 2021/11/06
핵심 개념 1
- 크롤링 vs 스크랩핑
- 크롤링
"crawler" 라는 용어는 명확한 목표가 없어도 사이크나 네트워크가 제공할 수 있는 것을 끝없이 탐색 하면서 스스로 웹 페이지를 탐색할 수 있는 프로그램의 능력을 의미한다. 크롤링은 검색엔진에서 URL의 콘텐츠를 추출하고, 이 페이지에서 다른 링크를 확인하고, 링크 URL을 가져오는데 주로 하며, 보통 웹 크롤링이라 말한다.
- 스크랩핑
크롤링과 달리 특정 웹 사이트 또는 페이지에서 특정 데이터를 추출하는 것을 의미한다. 기본적으로 스크랩핑을 수행하기 위해서는 먼저 크롤리의 작업수행이 선행 되어야 한다. 보통 데이터 스크래핑이라고 말한다.
웹 크롤링과 데이터 스크래핑의 차이점 비교, 그리고 필요성에 알아보자.
웹 크롤링과 데이터 스크래핑의 차이점 비교, 그리고 필요성에 알아보자. 웹 크롤링(Web Crawling)과 데이터 스크래핑(Data Scraping)이라는 개념이 있다 둘다 매우 많이 사용되는 개념이
theoriginalcatch.com
# 이번주에 처음으로 크롤링과 스크래핑의 개념에 대해 정리하고 적용시켜보았다. 프로젝트를 진행하는데 있어서 어떤 방식을 사용할지 잘 선정 하는것이 프로젝트의 진행속도에 많은 기여를 하고 그 부분에 대해 생각하게 되었다. 어떠한 기능을 사용하는게 적절한지 아직 삽질을 더 해야 감이 오겠지만... 코드를 바로 작성하기 보다는 구현할 기능에 필요한 패키지 라이브러리에 대해 알고 시작하는게 코드단에서 삽질을 덜 하는 방법이 아닐까 ...
- 검색어를 입력하면 원하는 정보를 스크랩핑.
원하는 정보를 url 한곳에서 크롤링을 할 수 없기 때문에 검색어를 입력해서 식당의 이름과 url을 크롤링 하고 그리고 다시 검색어와 식당이름을 합쳐서 크롤링을 해서 상세정보를 가지고 옵니다. 2번의 크롤링을 하기 때문에 시간이 좀 오래 걸린다.
⇒ 여기서 해결 해야할 문제
기존의 코드는 스크랩핑한 정보를 db에 저장하지 않고 정보들을 바로 json타입으로 리턴을 해준다. 그래서 스크립트로 받은 정보를 쿠키에 저장하고 쿠키에 저장된 문자값을 상세페이지에 보여주게 설계.
이렇게 설계했을때 문제점은 ?
- db에 저장된 값이 아닌 크롤링을 한 값을 받아와야 하기 때문에 리스트로 나타낼 때 시간이 너무 오래걸림.
- 크롤링을 해오는 url이 변경되거나 코드가 변경되면 에러발생
- 실제 현업에서는 크롤링을 주기적으로하는 라이브러리를 사용해서 db를 업데이트 해준다.
⇒ 결론 db에 무조건 값을 저장하고 불러와서 사용할 것!
핵심 개념2
- JWT(Json Web Token)
- 인증에 필요한 정보들을 암호화 시킨 토큰을 의미한다. 토큰은 세션과 달리 서버가 아닌 클라이언트에 저장 되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다.
- JWT를 사용하면 RESTful 과 같은 Stateless인 환경에서 사용자 데이터를 주고 받을 수 있다.
- RESTful : 웹의 장점을 최대한 활용할 수 있는 아케텍쳐방식을 의미한다 (참고 : https://nesoy.github.io/articles/2017-02/REST)
RESTful이란?
nesoy.github.io
- 토큰을 만드는데 있어서 크게 3가지의 정보를 사용한다.
1. Header : 3가지 정보를 암호화할 방식(알고리즘), 타입 등이 들어간다.
2. Payload : 서버에서 보낼 데이터가 들어간다. 일반적으로 사용자의 ID, 유효기간을 담는다.
3. Verify Signature : Base64 방식으로 인코딩한 Header, Payload 그리고 SECRET KEY를 더한다.
- JWT 사용시 진행순서
1. 클리이언트 사용자가 아이디, 패스워드를 통해 웹 서비스 인증
2. 서버에서 서명된 JWT를 생성하여 클라이 언트에 응답
3. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부
4. 서버에서 클라이언트로부터 온 JWT를 검증
# 서버에 프로젝트를 올릴 때 JWT적용해서 로그인 시 Type에러가 발생한을 해결 하기 위해 코드를 계속 보다보니 JWT 토큰의 로직의 기본을 이해하게 되었다.
핵심 개념
- API(Application Programming Interface)
- 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어 할 수 있게 만든 인터페이스를 의미한다.
(프로그램들이 서로 상효작용하게끔 도와주는 매개체)
- API의 역할
1. API는 서버와 데이터베이스에 대한 통로 역할을 하며, 허용된 사용자에게 접근성을 부여한다.
2. API는 모든 접속을 표준화하여 기계/운영체제 등과 상관없이 누구나 동일한 개세스를 얻을 수 있도록 한다.
내가 실수한 부분과 놓친 부분
- commit은 필수! 아직 git이 익숙하지 않다면 함부로 pull과 merge를 진행하지 말것! 원본파일은 항상 2개정도 가지고 있을것!
- 프로젝트의 진행 상황을 나혼자만 알지 말고 조금더 팀원과 공유를 하려 했다면 이렇게 main 원본파일이 최종버전이 아니라는 거도 알았을테고 시간내에 프로젝트를 완성하고 문서작성도 할 수 있었을 텐데... 라는 아쉬움이 생긴다. 일주일동안 작업해주신 부분을 다 보여주지 못해서 죄송한마음입니다 😢
'what I Learnd > WIL' 카테고리의 다른 글
WIL [항해99] 6주차 - 협업이란 (0) | 2021.12.11 |
---|---|
WIL [항해99] 5주차 - 같이 일하고 싶은 개발자 (0) | 2021.12.05 |
WIL -ORM , SQL (0) | 2021.11.28 |
WIL [항해99] 3주차 - NPM, REST (0) | 2021.11.21 |
WIL [항해 99] 2주차 - ECMAScript (0) | 2021.11.14 |