goodthings4me.tistory.com
■ 파이썬(Python) BeautifulSoup의 객체를 반환하는 모듈을 만들어서 사용해보기
- 연습 대상 사이트 : 네이버 금융 페이지에서 주가를 추출해서 저장해보기
▷ 모듈 : beautifulsoup.py
# url, headers, params를 인자로 전달하면 BeautifulSoup 객체를 return하는 function 만들기
import requests
from bs4 import BeautifulSoup
def get_bs_obj(url, headers = None, params = None):
result = requests.get(url, headers = headers, params = params)
soup = BeautifulSoup(result.content, 'html.parser')
return soup
▷ 네이버 금융의 증시 시가를 추출하기 위한 함수 만들기 (위의 eautifulsoup.py 사용)
from beautifulsoup import get_bs_obj
# company_code를 받아서 price를 리턴하는 함수
def get_price(company_code):
url = 'https://finance.naver.com/item/main.nhn' #?code=005930'
params = {
'code': company_code,
}
# BeautifulSoup 객체 생성 (모듈 이용)
soup = get_bs_obj(url, params = params)
# 찾는 종목코드가 없으면 None 리턴
# AttributeError: 'NoneType' object has no attribute 'find'
try:
company_name = soup.find('div', {'class':'h_company'}).find('h2')
company_name = company_name.text ## 회사명
except:
return None
no_today = soup.find('p', {'class':'no_today'})
#print(no_today)
blind = no_today.find('span', {'class':'blind'}) ## 주가 금액 부분
price = blind.text
return company_name, price
▷ get_price() 함수에 종목코드를 전달(리스트 참조)하여 "회사명, 코드, 주가" 데이터 추출하고, 저장해보기
codes = ['005930', '051900', '036570', '000672', '051905', '003240', '051910']
# codes 리스트의 종목코드를 찾아서 파일로 저장하기
for code in codes:
result = get_price(code) # 함수 호출
if result == None:
print('None')
continue
name, price = result
write_list = name + '$' + code + '$' + price + '\n' ## 저장데이터
with open('kosdaq.txt', 'a') as f:
f.write(str(write_list))
print(write_list)
[실행 결과]
삼성전자$005930$59,800
LG생활건강$051900$1,543,000
엔씨소프트$036570$782,000
None
LG생활건강우$051905$715,000
태광산업$003240$691,000
LG화학$051910$632,000
[참고] 한입에 크롤링 - Kyeongrok Kim
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 크롤링(Crawling) 연습 - Daum에서 검색한 전화번호의 기본 정보 추출 (0) | 2020.11.01 |
---|---|
파이썬 크롤링(Crawling) 연습 - find(), find_all() 사용한 네이버 증시 주가 추출 (0) | 2020.10.29 |
파이썬 웹 크롤링(Web Crawling) 알아보기 #9 (0) | 2020.10.26 |
파이썬 웹 크롤링(Web Crawling) 알아보기 #8 (0) | 2020.10.26 |
파이썬 웹 크롤링(Web Crawling) 알아보기 #7 (0) | 2020.10.25 |
댓글