컴퓨터잡담

파이썬 사이트 정보 가져와서 필요한 내용 추출하기

by nanumi posted May 31, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

 

import time #time 명령어 사용하기 
from selenium import webdriver #셀레니움 사용하기 
from selenium.webdriver.common.keys import Keys #키보드 입력하기 위한 설정
 
# 크롬 웹드라이버를 이용하여 크롬을 실행
driver = webdriver.Chrome("C:\chromedriver.exe")
 
driver.get("https://finance.naver.com/item/main.nhn?code=006980"#네이브로 이동 
time.sleep(1)

# html elemnt id가 stock_items 인 것을 찾습니다. 
inputElement = driver.find_element_by_id("stock_items"
#time.sleep(1)

#종목 검색창에 문배철강을 입력 
inputElement.send_keys("문배철강"
#time.sleep(1)

# 입력한 문배철강 검색내용을 서버로 보냄
inputElement.submit()
time.sleep(1)
 
#body에 PAGE_DOWN 키를 입력하여 스크롤을 아래로 내린다.
body = driver.find_element_by_css_selector("body")
body.send_keys(Keys.PAGE_DOWN)
time.sleep(1)
 
# 검색된 리스트 중 링크 텍스트에 "종목분석"이 포함된 것을 찾음 
continue_link = driver.find_element_by_partial_link_text("종목분석")
#time.sleep(1)
 
#'종목분석' 해당 링크를 클릭함 
continue_link.click() 
time.sleep(1)

#파이썬 requests 모듈은 간편한 HTTP 요청처리를 위해 사용하는 모듈로 별도로 설치해 주어야 한다.
import requests #pip3 install requests
from bs4 import BeautifulSoup #뷰티풀솝을 사용하기
 
#driver = webdriver.Chrome()  => 크롬드라이버 실행준비
#print (driver.current_url)  => 크롬창의 url 불러오기
 
html = requests.get(driver.current_url)
bs_html = BeautifulSoup(html.content,"html.parser")


 
driver.quit()

#bs의 select 사용법
    #soup.select('태그')
    #soup.select('.클래스명') 혹은 ('태그.클래스명')
    #soup.select('#아이디명') 혹은 ('태그#아이디명')
    #soup.select('태그 > 자식태그')
    #soup.select('태그 자손태그')
 
# id가 headline0인 태그의 자손 중 li 크롤링
    #title = soup.select('#headline0 li')

#현재가
today_value = bs_html.select("span.blind")[12]
print(today_value.text)
 
#시가총액
#total_value = bs_html.find('em', id="_market_sum").string
total_value = bs_html.find("em", { "id" : "_market_sum" }).get_text(" "strip=True)
print(total_value)
 
#PER
per_value = bs_html.find("em", {"id" : "_per"}).get_text(" "strip=True)
print(per_value)
 
#PBR
pbr_value = bs_html.find("em", { "id" : "_pbr" }).get_text(" "strip=True)
print(pbr_value)
 
#EPS
#eps_value = bs_html.select("em")[70]
eps_value = bs_html.find("em", { "id" : "_eps" }).get_text(" "strip=True)
print(eps_value)
 
#BPS
#bps_value = bs_html.select("table[5].per_table tr[2] td em[1]")
bps_table_value = bs_html.find_all("table", {"class" : "per_table"})
#bps_value = bps_table_value.find_all("tr")
bps_table_value = bps_table_value.select("")
print(bps_table_value)

#배당수익률
dvr_value = bs_html.find("em", { "id" : "_dvr" }).get_text(" "strip=True)
print(dvr_value)