필요 라이브러리
- requests : 웹페이지 가져오기 라이브러리
- bs4 (BeautifulSoup) : 웹페이지 분석(크롤링) 라이브러리
requests, beaurifulsoup 모듈이 설치되어 있지 않다면 먼저 설치해 주도록 합니다.
!pip install reqeusts
!pip install beautifulsoup4
1. 라이브러리 임포트 (import)
import requests
from bs4 import BeautifulSoup
2. 웹페이지 가져오기
https://finance.naver.com/sise/sise_quant.naver
거래상위 종목 : 네이버페이 증권
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
finance.naver.com
데이터를 가져오고 싶은 인터넷 사이트를 찾습니다. 저는 네이버페이 증권에서 거래상위 종목들을 크롤링해볼까 해요.
크롤링할 페이지 주소를 아래와 같이 넣어줍니다.
res = requests.get('https://finance.naver.com/sise/sise_quant.naver')
3. 웹페이지 파싱하기
- 파싱(parsing) : 문자열의 의미를 분석합니다.
soup = BeautifulSoup(res.content, 'html.parser')
4. 필요한 데이터 추출하기
- soup.select() 함수는 CSS Selector 로 tag 객체를 찾아 반환합니다.
- 변수.get_text() 함수로 추출한 부분을 가져올 수 있습니다.
크롬에서 F12 키를 눌러 개발자 도구를 실행시킵니다. 정보를 가져오고 싶은 영역의 HTML 태그의 클래스를 확인해야 합니다.
클래스명은 'tltle' 이네요!
titles = soup.select('.tltle')
titles
음.. 태그들까지 출력이 되네요..
변수.get_text() 함수를 적용하면 아래와 같이 문자열만 출력이 됩니다.
하지만, 저는 여러개의 종목이름을 출력하기 위해서 반복문을 사용해보겠습니다.
5. 추출한 데이터 활용하기
for num, title in enumerate(titles):
print(num+ 1, title.get_text())
각 종목의 순위와 종목 이름이 출력됩니다.
전체 코드
import requests
from bs4 import BeautifulSoup
res = requests.get('https://finance.naver.com/sise/sise_quant.naver') # 크롤링할 페이지 주소 넣기
soup = BeautifulSoup(res.content, 'html.parser')
titles = soup.select('.tltle') # 필요한 데이터 추출하는 코드 넣기
for num, title in enumerate(titles): # 추출한 데이터를 변수에 넣은 후, 원하는 프로그래밍
print(num+ 1, title.get_text())
크롤링 핵심 코드 패턴입니다.
위의 코드를 우선 그대로 쓰고, 세 부분만 수정해주면 쉽게 크롤링을 할 수 있습니다.
'Skills > Python' 카테고리의 다른 글
[Python] 동적 웹크롤링 - selenium 사용법 (0) | 2024.02.08 |
---|---|
[Python] Plotly 그래프 사이즈 및 margin 설정 (1) | 2024.02.07 |
[Python] len() 함수 : 문자열, 리스트, 튜플, 딕셔너리 길이 구하기 (0) | 2024.02.05 |
[Python] enumerate() 함수 (0) | 2024.02.01 |
[Python] plotly-iplot 사용법 (0) | 2024.01.30 |