삶의 공유
[파이썬] 웹 크롤링 (미국소비자물가지수, investing.com) 본문
크롬으로 실행 후 investing.com에서 미국 소비자 물가지수 들어감
(url : https://kr.investing.com/economic-calendar/cpi-733)
1) 빨간색 화살표 영역 선택 하면 좌측 표 전체 선택이 됨
2) 빨간 화살표 영역 선택 후 마우스 우클릭 -> copy -> copy xPath 클릭
3) selenium module의 webdriver를 이용하여 find_element_by_xpath 이용
import pandas as pd
from selenium import webdriver
# chrome 실행
driver = webdriver.Chrome(r'/Users/swk/Downloads/chromedriver')
# 해당 링크로 접속
driver.get('https://kr.investing.com/economic-calendar/cpi-733')
# 현재 창에서 스크린샷 찍고 저장
text = driver.find_element_by_xpath("//*[@id='eventHistoryTable733']")
print(text.text)
driver.quit()
결과
잘 갖고 오는 것을 볼 수 있다.
* 참고로 xpath 경로 copy해서 갖고 올때 ', '' 구분해서 수정 하길 바람, 보통 "" "" 으로 되어있어서 문자열로 인식 못하게 되는데 ', '' 로 구분해주면 문자열로 구분 가능 함
ex) "민호가 말했다 " 안녕하세요 " 라고 " -> 문자열로 인식 안됨
수정 : "민호가 말했다 '안녕하세요' 라고" 이렇게 하면 전체적으로 문자열로 인식됨
DataFrame화 하기
* 문자열로 되어 있기 때문에, pandas의 DataFrame 함수 호출 시 에러가 난다, 그래서 메뉴얼로 해본다..
먼저 text.text로 하면 문자열로 쭉 되어 있는 것을 볼수 있다.
공통적으로 '\n'으로 줄 구분을 할 수 있는 것을 볼수 있다.
split()함수를 통해 나눠준다
나눴으면, 컬럼으로 사용할 맨 첫번째 행을 분류한다.
이제 pandas 함수를 이용하여 빈 dataframe을 만들고 column명을 넣어 준다.
그 이후에 각 앞서 분류한 리스트의 각 항목들을 하나씩 접근해서 dataframe함수의 행으로 붙여 넣어 준다.
import pandas as pd
framelist = []
for idx, text in enumerate(split_text):
if idx == 0:
pass
else:
temp_list = []
split = text.split()
result = ''
for idx, t in enumerate(split):
if idx <= 3:
result += t
elif idx > 3:
if not(result in temp_list):
temp_list.append(result)
temp_list.append(t)
add_data = {'발표일':temp_list[0],'시간':temp_list[1], '발표':temp_list[2], '예측':temp_list[3], '이전':temp_list[4]}
df = df.append(add_data, ignore_index=True)
df
이렇게 하고, 깊은 복사를 통해 크롤링해 온 데이터가 없어져도 상관없도록 코딩해준다.
잘 된 것을 볼수 있다.
'Data Scientist > Python' 카테고리의 다른 글
[금융] 파이썬이용하여 코스피 대장주 찾기 Project-1(코스피편) (0) | 2021.12.08 |
---|---|
[데이터수집] 한국 거래소 업종 분류 현황 및 개별 지표 크롤링 하기 (0) | 2021.10.27 |
Bigquery (구글 클라우드 플랫폼) (0) | 2021.08.16 |
[Python]코딩 테스트 준비 (Python 문법(2)) (0) | 2021.02.01 |
[Python]코딩 테스트 준비 (출제 경향 및 준비 방법, Python 문법(1)) (0) | 2021.01.19 |