[TIL] 22.10.04

문종현·2022년 10월 4일
0

TIL

목록 보기
8/119
post-custom-banner

👉 오늘 한 일

  • 서울 120(다산콜센터) 데이터 수집

서울 120(다산콜센터) 데이터 수집

리버스 엔지니어링 : 객체를 복제하거나 향상시키기 위해 어떻게 작동하는 것인지 살펴보는 과정. 즉, 사람이 인공적으로 만들어 낸 것에서 지식이나 디자인 정보를 추출하고 이 정보를 바탕으로 어떤 것을 다시 생산하는 과정

  • 데이터 수집 전에 웹페이지의 html 소스 코드를 살펴보는 것

처음에는 콘다 환경에서 패키지 설치 권장. pip으로 설치하게 되면 c++이나 java 등 다른 언어에 의존성이 있는 패키지들은 로컬에 언어가 없다면 오류가 발생할 수 있음. 콘다는 이러한 시행착오를 줄여줌

-c : 채널
-c conda / -c conda-forge : 어느 채널(저장소)에서 패키지를 가져올 것인지의 차이

BeautifulSoup : 읽어온 웹사이트의 HTML 문서를 해석하는 목적으로 사용

  • 데이터 수집 도구는 아님

tqdm : 반복되는, 오래 걸리는 작업을 할 때 사용

with 구문 : with 구문 내에서만 메모리를 할당하고 이후에 제거

  • 파일이나 url 열람 시 사용

저작권

  • 네이버 증권 게시판에 내가 글을 쓰면 데이터베이스권은 네이버에 있으며 저작권은 글쓴이에게 있음

  • robots.txt는 서비스 제공자가 어떤 페이지를 스크래핑 해도 되고, 어떤 페이지를 스크래핑 해서는 안 되는지 구체적으로 명시하는 텍스트 정보

웹 스크래핑 시 한번에 많은 페이지를 요청하면 DDOS 공격으로 의심 받을 수 있음. 일반적으로는 time.sleep() 으로 시간 간격을 두고 가져옴

API의 경우 서비스 요청이 서버에 무리가 되지 않도록 한번에 전송하는 양이나 하루에 요청할 수 있는 횟수에 제한을 두고 있음

HTML
HTML 요소의 일반적인 형태
<tag>보이는 내용</tag>

  • HTML 요소의 이름은 태그의 이름. 종료 태그의 이름은 슬래시 문자 ("/")로 시작됨

CSS
마크업 언어(ex: HTML)가 웹사이트의 몸체를 담당한다면 CSS는 옷과 액세서리처럼 꾸미는 역할을 담당.

데이터 수집 전에 pseudo code를 구상해보기

try-except : try 구문에서 오류가 나면 except 구문으로 빠지게 됨

  • 함수를 반복적으로 돌리다 보면 중간에 오류가 나서 멈추는 경우가 있는데 try, except 구문은 이를 방지해줌
  • 오류가 나도 계속해서 다음 코드를 실행하고 싶을 때 사용(에러는 로그로 남기는 방식으로 사용)

반복문 정지 조건

  • return값의 type으로 확인 -> 게시글이 없거나 오류에 대해 메세지를 출력하도록 했으므로 str이 나오면 정지하도록 함
  • 데이터 수집 프로세스에 따라 다르게 조건을 지정함
if type(df_temp) == str :
	print("수집이 완료되었습니다.")
    break

.get_text(), .text : html에서 텍스트만 따옴

텍스트 내에 아스키코드 : 사이트 편집기에서 사용하기 때문에 나타남
-> 분석을 위해 전처리해야 함

.T == .transpose() : 전치행렬 처리

  • 컬럼을 인덱스로 지정(.set_index())해야 전치행렬(.T) 처리할 수 있음
  • 행, 열이 깨끗하게 정리되지 않은 데이터들을 정리할 수 있음

예시

tb01 = table[[0, 1]].set_index(0).T
tb02 = table[[2, 3]].set_index(2).T
tb02.index = tb01.index # index값이 같아야 concat으로 데이터프레임 붙이기 가능
pd.concat([tb01, tb02], axis=1)

처리 이후

map, apply : 일괄 적용할 때 쓰는 함수

  • 여기서는 for 반복문을 사용하지 않고 데이터프레임에 같은 함수를 적용하기 위해 사용
  • 반복문 사용할 때보다 훨씬 빠름

lambda : 이름이 없는 익명 함수

profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글