리버스 엔지니어링 : 객체를 복제하거나 향상시키기 위해 어떻게 작동하는 것인지 살펴보는 과정. 즉, 사람이 인공적으로 만들어 낸 것에서 지식이나 디자인 정보를 추출하고 이 정보를 바탕으로 어떤 것을 다시 생산하는 과정
처음에는 콘다 환경에서 패키지 설치 권장. pip으로 설치하게 되면 c++이나 java 등 다른 언어에 의존성이 있는 패키지들은 로컬에 언어가 없다면 오류가 발생할 수 있음. 콘다는 이러한 시행착오를 줄여줌
-c : 채널
-c conda / -c conda-forge : 어느 채널(저장소)에서 패키지를 가져올 것인지의 차이
BeautifulSoup : 읽어온 웹사이트의 HTML 문서를 해석하는 목적으로 사용
tqdm : 반복되는, 오래 걸리는 작업을 할 때 사용
with 구문 : with 구문 내에서만 메모리를 할당하고 이후에 제거
저작권
네이버 증권 게시판에 내가 글을 쓰면 데이터베이스권은 네이버에 있으며 저작권은 글쓴이에게 있음
robots.txt는 서비스 제공자가 어떤 페이지를 스크래핑 해도 되고, 어떤 페이지를 스크래핑 해서는 안 되는지 구체적으로 명시하는 텍스트 정보
웹 스크래핑 시 한번에 많은 페이지를 요청하면 DDOS 공격으로 의심 받을 수 있음. 일반적으로는 time.sleep() 으로 시간 간격을 두고 가져옴
API의 경우 서비스 요청이 서버에 무리가 되지 않도록 한번에 전송하는 양이나 하루에 요청할 수 있는 횟수에 제한을 두고 있음
HTML
HTML 요소의 일반적인 형태
<tag>보이는 내용</tag>
CSS
마크업 언어(ex: HTML)가 웹사이트의 몸체를 담당한다면 CSS는 옷과 액세서리처럼 꾸미는 역할을 담당.
데이터 수집 전에 pseudo code를 구상해보기
try-except : try 구문에서 오류가 나면 except 구문으로 빠지게 됨
반복문 정지 조건
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
: 일괄 적용할 때 쓰는 함수
lambda
: 이름이 없는 익명 함수