본문 바로가기

전체 글349

Selenium 개요 □ 특징 ○ selenium은 웹 브라우저 작업을 자동화하기 위한 패키지임 ○ 브라우저 인스턴스를 원격으로 제어하고 사용자와 브라우저와의 상호작용 지원 ○ 웹 페이지에 텍스트 입력, 체크 박스 선택, 링크 클릭, 마우스 이동 및 임의의 JavaScript 실행 ○ 웹 페이지에서 자료를 수집하기 위한 RPA 구축 시 가장 많이 사용하는 패키지임 ○ BeautifulSoup에 비하면 속도가 느리고 메모리도 상대적으로 많이 사용함 ※ 셀레니움 4 크롬드라이버 자동으로 다운 ※ 최신 업데이트된 방식 사용 - 크롬 드라이버 자동 업데이트 코드 pip install selenium pip list #버젼확인 pip install webdriver-manager #웹드라이버 자동업데이트 #셀레니움 3점대라면 아래 코.. 2024. 2. 14.
특정 사이트 크롤링 및 데이터프레임 생성 □ 아래와 같은 형식으로 데이터를 표시하는 웹사이트 크롤링 후 크롤링한 데이터를 데이터프레임으로 저장해보자 #라이브러리 호출 from bs4 import BeautifulSoup from urllib.request import Request, urlopen import pandas as pd #사이트 url_base = 'http://www.chicagomag.com' url_sub = '/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/' html = urlopen(url) soup = BeautifulSoup(html, "html.parser") #크롤링 타겟태그 선택 target_area = soup.select('div.sammy') #크롤링 데이.. 2024. 2. 13.
쿠팡 : 상품 검색결과 중 로켓배송인 상품 크롤링 □ 내용 ○ 쿠팡에서 특정 키워드에 따른 검색결과 상품 들 중 로켓배송이 되는 품목만 크롤링 ○ 특이사항 - 변수명 = .select('li[class=search-product') → li 태그 중 클래스명이 정확히 search-product 인 것을 앞 코드와 같이 표현 ▶ .select('li.search-product')과 같이 쓰면 아래 이미지와 같이 특정 클래스명이 들어간것을 모두 파악하여 처리해야할 변수 및 정확도가 떨어짐 - continue 문 : 조건이 True이면 아래 코드까지 진행, 조건이 False면 위로 올라가서 코드실행 #로켓뱃지 rocket_pd = i.select_one('.badge.rocket') if rocket_pd: continue #로켓벳지가 없다면 위로 올라가서 .. 2024. 2. 13.
판다스 : 전처리 기본 함수 요약모음 ○ 인덱스 유 데이터프레임 생성: pd.DataFrame({키:벨류}) df1 = pd.DataFrame( { '미국' : [2.1,2.2,2.3], '한국' : [0.4,0.5,0.45], '중국' : [10,13,15] } ) ○ 인덱스 무 데이터프레임 생성 : pd.DataFrame({키:벨류}, index = [인덱스값]) df2 = pd.DataFrame( { '미국' : [2.1,2.2,2.3], '한국' : [0.4,0.5,0.45], '중국' : [10,13,15] }, index = [1000,2000,3000] ) ○ 인덱스 조회 : 변수명.index df2.index ○ 인덱스 변경 : 변수명.index[변경값] df2.index=[3000,4000,5000] ○ 신규 컬럼추가 및 해.. 2024. 2. 11.
CGV 무비차트 크롤링 □ 과정 ○ 데이터 영역 Select_one으로 지정 ○ 영역에서 특정영역 Select 으로 지정 ○ 반복문을 활용해 '부모태그.클래스명 > 자식태그.클래스명'식으로 정확한 타겟 지정후 string으로 추출 * ('span.txt-info > strong').next_element 사용시 strong 태그가 열리고나서 출현하는 첫번째 텍스트 또는 태그값 가져옴. 도중 중간에 태그가 있다면 그 전까지만 가져옴. 하위 태그 및 텍스트까지 가져오고 싶다면 .find_next() 활용. 2024.02.07 개봉 □ 코드 및 결과 #라이브러리 호출 import requests from bs4 import BeautifulSoup #타겟 target_url = 'http://www.cgv.co.kr/movies/'.. 2024. 2. 11.
SSG 이벤트 크롤링 : select, find_all(string=True) □ .replace : 기존 A를 B로 바꿈 □ .strip() : 앞뒤 공백 제거 □ 태그활용법 : ('태그명'), ('.클래스명'), ('태그명.클래스명'), ('부모태그.클래스명 > 자식태그.클래스명'), ('태그')['속성'] □ select + find_all(string=True) vs select + select_one ○ 아래 코드보면 알 수 있듯이 select + select_one 방법이 정확한 데이터를 추출하고 전처리하기에도 수월함 ○ select+find_all 사용시 간편한 코드로 해당 영역의 텍스트를 신속하게 추출할 수 있지만 전처리하기에 불편함. * 개인적으로 select + select_one 추천 / 특정영역의 정확한 태그값을 지정함으로써 효율적으로 수집, 가공이 가능하기에.. 2024. 2. 9.
EDA(Exploratory Data Analysis) : 탐색적 데이터 분석 과정 □ EDA(Exploratory Data Analysis)란? ○ 데이터 분석을 위해 raw data를 다양한 각도에서 관찰하여, 데이터를 이해하는 과정 ○ 데이터 분석 주제마다 EDA를 통해 진행하는 과정은 각양각색이므로, 정형화된 패턴은 없지만, 크게 다음과 같은 3가지 과정은 기본이 될 수 있으므로 다음 3가지 과정을 기본으로 이해하기로 함 - 데이터의 출처와 주제에 대해 이해 - 데이터의 크기 확인 - 데이터 구성 요소(feature)의 속성(특징) 확인 : feature: 데이터 구성 요소를 위미함 ○ 기존 통계학이 가설을 세우고, 가설을 검정하는 방법론에 치우쳐, 데이터 본래의 정보를 파악하기 어려우므로, 본연의 데이터 탐색에 집중하자는 방법론 2024. 2. 9.
판다스 : 데이터 핸들링 예제 □ 타이타닉 데이터 핸들링 ○ 데이터불러오기 import numpy as np import seaborn as sns import pandas as pd titanic = sns.load_dataset('titanic') ○ 특정필드 선정 및 셋지정 new_titanic = titanic[['age','sex','class','fare','survived']] ○ 특정필드 그룹바이 *그룹바이만 한다면 해당 데이터는 객체로써 존재함 grouped = new_titanic.groupby('class') ○ age 평균보다 아래인 데이터 new_titanic[new_titanic['age'] < new_titanic['age'].mean()] ○ age의 표준편차를 구하고 해당 값으로 구성된 신규필드 생성 d.. 2024. 2. 9.
판다스 : groupby, 멀티인덱스 활용 조회 □ 라이브러리 및 데이터 불러오기 #라이브러리 불러오기 import numpy as np import seaborn as sns #데이터 불러오기 titanic = sns.load_dataset('titanic') □ 지정한 필드로 데이터셋 생성 #1. 지정한 필드로 데이터셋 생성 new_titanic = titanic[['age','sex','class','fare','survived']] □ 특정열 복수 지정 후 그룹바이 → 아래 코드와 같이 groupby만 진행한다면 데이터는 데이터프레임 또는 시리즈가 아닌 단순한 객체로써만 존재함 #2. class와 sex필드로 그룹바이 group_titanic = new_titanic.groupby(['class','sex']) print(type(group_t.. 2024. 2. 8.