티스토리 뷰
728x90
[오늘은 주식 정보를 크롤링해서 가져오겟습니다.]
먼저 아래 코드에서 사용된 replace_stock라는 함수는 크롤링해서 가져온 정보를 사용학기 위한 직접적인 정보로 바꿔주는 역할임을 알려드립니다.
def replace_stock(datas):
datas = datas.replace("td","")
datas = datas.replace("<","")
datas = datas.replace(">","")
datas = datas.replace(" ","")
_,datas = datas.split(",",1)
return data
from bs4 import BeautifulSoup
import requests
stock_name = str(input())
data = []
def replace_stock(datas):
datas = datas.replace("td","")
datas = datas.replace("<","")
datas = datas.replace(">","")
datas = datas.replace(" ","")
_,datas = datas.split(",",1)
return data
try:
data_remove = []
url="https://www.google.com/search?query=" + stock_name +" 주식"
hdr = {'Accept-Language': 'ko_KR,en;q=0.8', 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36')}
req = requests.get(url, headers=hdr)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
for i in soup.select('div[class=aviV4d]'):
data.append(i.text)
#print(data)
for i in soup.select('div[class=OiIFo]'):
data_remove.append(i.text)
#print(data_remove)
_,remove = data_remove[0].split(" ")
data = str(data).split(" ")
price = data[1].replace(remove,"")
except IndexError as I:
data1 = soup.findAll('td')
data = str(data1).split("/td")
price = replace_stock(data[1])
data[3] = replace_stock(data[4])
updown = replace_stock(data[7])
if updown[0] == '-':
data[3] = '-' + data[3]
else:
data[3] = '+' + data[3]
print("{} 주식 관련 정보".format(stock_name))
print("현재 가격 : {} \n가격변동 : {}".format(price, data[3]))
작동 방식은 원하는 주식 이름을 입력받아 그 입력받은 값에 "주식"을 붙여 구글에 검색하는 원리입니다. 이런 방식으로 크롤링을 진행하면 처음 입력이 잘못되어도 구글에서 자동적으로 검색어를 보정해줍니다.(ex : XX점자(잘못입력) -> XX전자(알맞은 값)으로 변환 후 검색)
단점은 특정 주식에 대한 html구성이 다를 경우에 크롤링이 되지 않을 수 있습니다. (이를 해결하기 위해 excpet문을 추가했지만, 또 다른 케이스가 존재할 경우 크롤링이 안 될 수 있습니다.)
실행값 :
※해당 사이트의 robots.txt를 찾아보면
User-agent: * Disallow: /search
이므로 이 포스팅은 공부 참고용으로만 사용해주시기를 권장합니다! ※
'프로그래밍 > 스크래핑' 카테고리의 다른 글
[Python] 롤 카운터 자동화 (0) | 2021.01.03 |
---|---|
[Python] webdriver를 이용한 리로스쿨 크롤링 (0) | 2020.02.19 |
[Python] 네이버 영화 평 가져오기&데이터 분류 (0) | 2020.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- localstorage
- promise반환
- Anaconda
- 코드업
- 꿈두레
- django
- 타이탄의도구들
- 바닐라 javascript
- SMTP
- 아나콘다
- notion api
- 1251
- Python
- 코드설명
- JavaScript
- 문제풀이
- 주석
- Codeup
- pygame
- 사칙연산
- 1252
- 2022.02.05
- 1254
- 컨트롤타임
- 1255
- 1253
- 크롤링
- 도전
- 티처블 머신
- 바닐라 js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함