-
파이썬 인터넷 크롤링 하기(requests, bs4)파이썬자동화 2023. 1. 3. 21:34반응형
파이썬 인터넷 크롤링 하기(requests, bs4)
안녕하세요. 오늘은 웹페이지에 있는 데이터를 요청하여 가져오는 방법에 대해 알아보도록 하겠습니다.
일단은 requests와 Beautifulsoup4 라이브러리를 설치하셔야 합니다.
오늘은 네이버 주식 데이터를 크롤링해보도록 하겠습니다.
제가 사용하는 라이브러리 버전은 아래와 같습니다.
beautifulsoup4 == 4.11.1 requests == 2.28.0
라이브러리를 설치 안 하신 분들은 아나콘다를 사용하지 않고 pip를 이용하시는 분들은
pip install requests, beautifulsoup4를 입력하여 설치하여 주시기 바랍니다.
이제는 크롤링할 페이지의 page source를 직접 가져오겠습니다.
웹페이지에서도 우클릭 "페이지 소스 보기" 같은 HTML 소스를 볼 수 있습니다.
1. 크롤링할 페이지 소스 불러오기
https://finance.naver.com/sise/sise_index.naver?code=KOSPI
해당 일별시세 부분은 iframe 형식으로 구성되어 있어 일별시세에서 오른쪽 우 클릭 하신 후 아래와 같은 절차로 진행하겠습니다.
2. requets 라이브러리로 요청하기
크롤링할 페이지 주소를 얻어왔으니 요청을 해보도록 하겠습니다.
import requests page_url = 'https://finance.naver.com/sise/sise_index_day.naver?code=KOSPI' source = requests.get(page_url).text source
실행한 결과는 아래와 같습니다.
이런 HTML 코드 속에서 우리가 원하는 데이터를 크롤링하기가 힘듭니다.
그래서 이후에 사용할 것이 다음과 같습니다.
3. beautifulsoup4를 이용해서 태그에서 정보 가져오기
- beautifulsoup4(bs4)는 HTML source를 tag별 계층 구조를 파악하기 쉽게 parse tree 형태로 변환해주는 라이브러리입니다.
- bs4를 사용하면 손쉽게 HTML source에서 원하는 정보를 추출할 수 있습니다.
- find, find_all 함수를 이용하면 원하는 tag와 속성에 맞는 모든 정보를 가져올 수 있습니다.
# beautifulsoup4를 불러옵니다. import bs4 # BeautifulSoup 함수를 사용해서 불러온 html source를 "lxml" parser로 parsing 합니다. source = bs4.BeautifulSoup(source)
우리가 찾을 데이터는 "td" 태그에 "class"는 "number_1"인 데이터 체결가를 가져오겠습니다.
# find_all()는 HTML source에서 조건을 만족하는 모든 tag을 가져오는 함수입니다. source.find_all('td', class_ ='number_1')
[<td class="number_1">2,225.67</td>, <td class="number_1"> <span class="tah p11 nv01"> -0.48% </span> </td>, <td class="number_1" style="padding-right:40px;">346,344</td>, <td class="number_1" style="padding-right:30px;">5,200,137</td>, <td class="number_1">2,236.40</td>, <td class="number_1"> <span class="tah p11 nv01"> -1.93% </span> </td>, <td class="number_1" style="padding-right:40px;">361,194</td>, <td class="number_1" style="padding-right:30px;">6,036,542</td>, <td class="number_1">2,280.45</td>, <td class="number_1"> <span class="tah p11 nv01"> -2.24% </span> </td>, <td class="number_1" style="padding-right:40px;">405,893</td>, <td class="number_1" style="padding-right:30px;">7,566,892</td>, <td class="number_1">2,332.79</td>, <td class="number_1"> <span class="tah p11 red01"> +0.68% </span> </td>, <td class="number_1" style="padding-right:40px;">448,498</td>, <td class="number_1" style="padding-right:30px;">7,126,994</td>, <td class="number_1">2,317.14</td>, <td class="number_1"> <span class="tah p11 red01"> +0.15% </span> </td>, <td class="number_1" style="padding-right:40px;">427,844</td>, <td class="number_1" style="padding-right:30px;">5,205,750</td>, <td class="number_1">2,313.69</td>, <td class="number_1"> <span class="tah p11 nv01"> -1.83% </span> </td>, <td class="number_1" style="padding-right:40px;">366,988</td>, <td class="number_1" style="padding-right:30px;">5,935,798</td>]
위와 같은 데이터를 가져올 수 있습니다. 오늘은 크롤링을 해서 원하는 데이터를 가져와보았습니다.
'파이썬자동화' 카테고리의 다른 글
파이썬 인터넷 크롤링 자동화 하기(Selenium) (0) 2022.11.24
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."