[230110] 멋쟁이사자처럼 AI SCHOOL 8기 '네이버 경제 뉴스 웹스크래핑_박조은강사님' 복습

조세연·2023년 1월 12일
0

멋사 AI SCHOOL 8기

목록 보기
12/35

📝Today I learned

🚀 TIL 목차 🚀

  • pandas의 read_html을 활용한 웹스크래핑
    • read_html이란?
    • read_html 사용해보기

pandas의 read_html을 활용한 웹스크래핑

1) read_html이란?

  • read_html : 특정 URL을 입력하면 HTML 코드 안의 "table 태그"를 찾아 반환해주는 함수. 번거롭게 사용자가 일일이 수집해올 데이터를 지정해주지 않고도 알아서 table 형식을 데이터를 수집하고 데이터프레임 형태로 만들어줌.

🧉 쿼리스트링(Query String)
: 원하는 검색어를 URL에 붙여서 넘기는 문구
: 지정된 매개변수에 값을 할당하는 Uniform Resource Locator의 일부

2) read_html 사용해보기

🔹 pandas 불러오기

import pandas as pd

🔹 원하는 종목으로 url 설정

item_code = "005930"
item_name = "삼성전자"
page_no = 1

url = f"https://finance.naver.com/item/news_news.nhn?code={item_code}&page={page_no}"

🔹 read_html로 데이터 수집하기

table = pd.read_html(url)
table

🔹 데이터프레임으로 만들기

df = table[0]
df
  • 왜 0번째 인덱스 값을 사용하나요?
    : 0번째, 1번째 등 인덱스 값을 출력해보면 우리가 원하는 정보는 0번째에 있기 때문

🔹 반복문으로 원하는만큼 데이터 수집하기

 
cols = table[0].columns # [0, 1, 2]로 되어있는 칼럼명을 ['제목', '정보제공', '날짜']로 변경

temp_list = []
for news in table[:-1]: # 맨 마지막 값은 필요 없음
    news.columns = cols
    temp_list.append(news)

🔹 수집한 데이터를 하나의 데이터프레임으로 합치기

df_one_page = pd.concat(temp_list)
df_one_page

🔹 결측치 제거하기

df = df_one_page.dropna()

🔹 불필요한 '연관기사' 데이터 삭제하기

df = df[~df["제목"].str.contains("연관기사")]

🔹 중복데이터 제거하기

df = df_one.drop_duplicates()

-> 이 모든 과정을 하나의 함수로 만들면 끝!

❗이것만은 외우고 자자 Top 3

📌 read_html : table 태그가 있다면 pandas의 read_html로 간편하게 웹스크래핑을 할 수 있다.

📌 f string을 활용하여 코드의 유지보수력을 높이자

📌 결측치 제거와 중복데이터 제거 함수를 헷갈리지 말자

  • 결측치 제거: dropna()
  • 중복데이터 제거: drop_duplicates()

🌟데일리 피드백

1. 오늘의 칭찬&반성

본격적인 웹스크래핑 수업으로 넘어왔다.. 왜 이 코드를 배우는지 하나하나 고민하느라 머리가 아프지만 코드를 짜는 전체적인 흐름을 파악할 수 있어서 좋았다. 근데 나는 코드를 마구 짜고 싶어서 일단 코드부터 짜려고 한다. 그 전에 알고리즘을 촘촘히 생각하고 코드를 작성하는 습관을 들이자.

2. 내가 부족한 부분

비슷한 것들을 퉁쳐서 생각하는 것. 제거하는 함수라고 해서 다 똑같은 게 아녀!!!

3. 내일의 목표

함수의 정확한 의미와 쓰임을 이해하며 수업 듣기

profile
HR Analyst가 되고 싶은

0개의 댓글