728x90
반응형
https://monstrosite.tistory.com/10
(전의 글에 이어서 작성됩니다.)
3) 웹사이트 구조 파악하기
웹사이트 구조를 파악하기 위해 우리는 F12키를 눌러 개발자 도구를 사용할 것입니다.
개발자 도구의 위 버튼을 클릭하시면 웹 사이트의 HTML문서에서 우리가 원하는 데이터의 정보를 확인할 수 있습니다.
예시로 우리가 찾고자 하는 회사명을 확인하고 싶다면,
와 같은 방식으로 사용할 수 있습니다.
위의 개발자 도구에서 매매가는 div class="h_company" 태그 아래의 a 태그 안에 위치합니다.
이러한 구조를 토대로 코드를 작성할 수 있습니다.
4) 코드 설계하여 작성하기
import requests
from bs4 import BeautifulSoup
def crwal(code):
url = f"https://finance.naver.com/item/main.naver?code={code}"
# url에대해 get 요청을 합니다
res = requests.get(url)
# 요청한 url을 문자열로 사용하기 위해 다음과 같이 작성합니다
bsobj = BeautifulSoup(res.text, "html.parser")
# 매매가 처리
# (1) div태그의 class명이 today인 경우를 찾습니다
div_today = bsobj.find("div", {"class" : "today"})
# (2) 위의 경우에서 em태그가 수식되어있는 경우를 찾습니다
em = div_today.find("em")
# (3) em 태그안에서 span태그의 class가 blind인 경우에서 .text로 안의 문자열을 가져옵니다
price = em.find("span" , {"class" : "blind"}).text
# 회사명 처리
# (1) div태그의 class명이 h_compnay인 경우를 찾습니다
h_company = bsobj.find("div", {"class" : "h_company"})
# (2) 위의 경우에서 a태그 안의 문자열을 가져옵니다
name = h_company.a.text
# 각각의 매매가와 회사명을 딕셔너리 안에서 연결합니다
dic = {"price" : price, "name" : name}
# 최종적으로 딕셔너리를 리턴합니다
return dic
dic = crwal("086520")
print(dic)
매매가와 회사명에 대해 개발자 도구를 통해 데이터의 구조를 가져와 코드상에서 풀어보았습니다.
또 가져온 데이터를 key와 value로 서로 매핑할 수 있는 딕셔너리를 사용하여 연결시켰습니다.
위의 코드를 작성하여 실행해보면,
다음과 같은 정보를 얻을 수 있습니다.
만약, 더 많은 정보를 원한다면 개발자 도구를 통해 데이터의 구조를 알아내어 적용할 수 있을 것입니다.
728x90
반응형
'Python' 카테고리의 다른 글
Closure와 Decorator (0) | 2024.11.17 |
---|---|
인코딩과 디코딩 (0) | 2024.11.16 |
자료형 어노테이션 (0) | 2024.11.15 |
iterator와 generator (0) | 2024.11.14 |
python을 통한 주식 관련 정보 추출 (1) (0) | 2024.03.03 |