TIL 100일차 : 캐글-코랩 & 크롤링 문제 해결

2024. 3. 28. 08:28회고/TIL(매일)

 

✏️도전한 점


1. 프로젝트 크롤링 관련으로 셀레니움, 뷰숲 복습

2. keras 버전 맞춰서 긍부정 코드 돌아가게 하기

3. 오후 1시 : 갑자기 캐글, 코랩 연동 문제 해결됨

4. 좋은 데이터셋 찾는 법 특강 듣기

5. 크롤링 막히는 부분 상담 (selector시도, api사용)

6. xpath로 막히는 부분 selector로 해결하기

 

01 문제해결: 크롤링 막힘 -> CSS_SELECTOR로 해결


element1 = driver.find_element(By.CSS_SELECTOR, ".DUwDvf.lfPIob") # 이름
element2 = driver.find_element(By.CSS_SELECTOR, ".F7nice > span:nth-child(1)") # 평점
element3 = driver.find_element(By.CSS_SELECTOR, ".F7nice > span:nth-child(2)") # 리뷰수
element4 = driver.find_element(By.CSS_SELECTOR, ".fontBodyMedium span button.DkEaL") # 카테고리
element5 = driver.find_element(By.CSS_SELECTOR, ".rogA2c") # 주소

 

문제 1. XPATH만 사용하다가 한계를 경험하고 CSS 수집을 배움.

문제 2. 스크롤을 내리며 수집할 때에는 어떻게 해야할지 같나?

 

결론 1. By.XPATH, CSS_SELECTOR을 넘나들며 사용하고 있다.

결론 2. 내일은 elements부분을 어떻게 해결해야할지 고민한다.

결론 3. CSS 복합 선택자를 추릴 때에 사전 지식이 필요하다.

 

인사이트 1. time.sleep() 함수

- 함수에 전달되는 시간 인자는 양수이어야 하며, 부동 소수점 숫자를 포함할 수 있다. 따라서 time.sleep(random.uniform(5, 10))은 5부터 10 사이의 무작위한 소수점을 가진 시간 동안 프로그램을 일시 정지시킨다. 이를 통해 일정 범위 내에서 다양한 대기 시간을 가질 수 있으며, 이는 웹 스크래핑 및 자동화 작업에서 유용하게 활용된다.

 

인사이트 2. 크롤링 주의점

- 기업이 클수록 데이터 크롤링 막힐 확률이 높다.
- 제공하는 API를 사용하는 것이 쉬운 방법이 될 수 있다.
- 한 달 내로 크레딧을 사용하지 않으면 증발. (아이디 파)
- gcp는? 검색 > goole cloud > 콘솔로 이동 > 이제 조심!!

- 우측상단 "활성화" 누르면 바로 유료화 된다. but 안누르면 바로 사용 막힘, 결제는 안하는 듯?

- 좌측 상단 크래딧 확인하기.

- 결론: "활성화"를 주의한다.

인사이트 3. 파이썬으로 maps api 수집하는 방법
https://iweb-scraping-services.medium.com/how-to-extract-google-reviews-using-google-maps-api-python-ae6df4e6659e

 

How to Extract Google Reviews using Google Maps API & Python?

Google Maps is a client application and web-based platform developed by Google. Google Maps allows you to post reviews, which are visible…

iweb-scraping-services.medium.com

 

02 크롤링 강의 복습


노트 필기 (차후 추가하기)

 

03 문제해결: 캐글, colab 연동 문제 드디어 해결


<문제 해결을 위해 노력한 점>

1. 캐글 토큰 만료, 갱신 반복

2. colab 로컬 환경 세팅하기

3. colab에서 kaggle.ipynb 토큰 파일 업로드, 연동

4. 기타 반복되는 노력들

 

<문제 해결 방법>

1. colab 안쓰는 사람들은 (vscode 등)  위에거 설정해서 사용하라는거고
2. 애초에 gemma모델은 keras모듈에서 가져오기 때문에
3. colab에서 실행하는 경우, 따로 설정 안해도 되는거 였음.
4. 그래서 다른사람들은 패스하고 잘되는 것이다🥹

 

<따로 연동하고 싶을 때>

1. 왼쪽 보안 키 넣는곳에 첫번째는 KAGGLE_USER 값에는 "아이디"
2. 두번째는 KAGGLE_KEY 값에는 "발급 받은 키"
3. 왼쪽 열쇠 모양이  아이디, 비번등을 저장하는 저장소
4. 코드의 뜻은 userdata.get()은 왼쪽의 아이디 비번을 가져와서

5. os. 그러니까 현재 코랩 환경에 추가하는 설정이다.

 

 

<기타 인사이트>

1. 구글맵: 마우스 휠 내리면 나오는거 확인하고, 크롤링은 셀레니움으로 해야한다.
2. 캐글 토큰 같은 개인 인증키는 colab에 공개하면 안된다. 즉, 숨겨야 하는데 내가 자꾸 공개함.
3. 저장해서 갖다써라고 칸을 만들어 준 것.
4. gemma 라는 모델 자체가 캐글에 올라와 있잖아?

5. "캐글 gemma"를 사용하기 위해서 캐글 인증키가 필요한 것이다.

 

04 연습용 데이터셋을 고르는 방법


1. 쓸만한 데이터의 공통점
- 테이블이 하나가 아닐 경우, 테이블 간의 관계가 명확히 정의된 게 활용하기 좋음.
- 테이블 관계 명시 ER다이어그램 있으면 좋음.
- 데이터 컬럼 설명이 명확하다.
- 데이터 컬럼 갯수가 많다. 다양하면 다양한 시도를 할 수 있다.
- 데이터 양은 최소 만건 단위의 데이터셋을 찾는 걸 추천한다.
- 포트폴리오에 '만 건 단위의 데이터를 다뤄보았다'고 기재할 수 있다.
- 카페 고객 데이터가 13만건이었는데 기재해야겠다.
- 데이터 모델링 시, 많은 데이터를 학습할 경우 모델이 정교해진다.

2. 데이터를 찾는 방법
- bank, market, game, insurance 뿐만 아니라 시야를 넓여서 다양하게 짧은 단어로 검색해본다: 데이터 분석에서 자주 쓰이는 컬럼 이름을 검색해보길 추천한다. imcome, transaction, trend, ad, visit, imp, click, conversion, ctr, cvr, predict 등을 검색하길 시도해보자.
- 키워드를 고르는 방법: 도메인 기준으로 접근해주길 바란다. (게임이라면 게임계정ID, 게임캐릭터ID, 레벨, 경험치, 서버번호 등의 컬럼 이렇게 분야별로 컬럼이름이 다르다.)

3. 데이터 찾기 시작
- 캐글 데이터셋의 필터를 사용해서 크기를 조정할 수 있다.
- dataset size : 미디엄~라지
- dog adoption 강아지 뭐야 귀엽다
data.world : 에서도 가능하다. (캐글에 없는 데이터도 있는 경우 많음)
FiveThirtyEight : 통계학자가 운영하는 통계사이트(데이터 크기 모름, 깃허브로만 크기 봄)
문화공공데이터광장 : 문체부 제공 공공데이터, 문화예술/건강/도서, 데이터개방-파일데이터-도서 누르면 40만건이 있는 걸 볼 수 있다.

4. 데이터셋 추천
- 로우 단계로 존재하는 데이터를 추천한다.

- 노션 업로드한 데이터셋을 보며 감을 배운다.

 

✏️인생 인사이트


1. 세상을 SQLD 풀 때처럼 살아야 할 때가 있는 거다. 오늘 또 하나 배웠다. 어려운 점을 포기하라는 게 아니라 잠깐 보류하고 일단 다음 스텝을 나가라는 것이다. 시간이 부족하니까. 변명하자면, 나도 연동 부분을 패스하고 다음 단계를 풀고 있긴 했다. 그게 남들보다 조금 더 걸렸을 뿐이지🥹 끈기있다고 해주라. 하루도 안잡았으니까. NT 유형만 안된다고 잡고 있었던 게 비하인드 웃긴 부분이다.

 

2. 수집 비하인드: Restart만 누르면 해결되는 문제로 앓고 있어던 점이 어이없다. 주의한다.