지난 게시글에서는 urlopen을 사용해 특정 주소의 html 값을 가져왔다. 다만 이 기능은 requests를 통해서도 동일하게 진행할 수 있다. urlopen과 달라보이지만 다를 것도 없는 것이 url을 따로 입력해주어도 되고, urlopen을 사용할때와 마찬가지로 get() 안에 링크를 직접 입력해주어도 된다.
from bs4 import BeautifulSoup as bs
import requests
url = 'https://finance.naver.com/sise'
response = requests.get(url)
status_code값 얻어오기
requests 라이브러리는 status_code 함수를 사용할 수 있다. 즉, 위의 코드에서 response라는 변수 안에 사전에 설정한 링크(url)의 정보를 얻어온(get) 후에 그 값을 저장하도록 했는데, 여기서 status_code를 받아올 수 있다. 간단하게 말하자면 status_code는 링크의 정보를 가져온 후의 결과값을 나타내며 '200'이 출력될 경우 성공적으로 가져왔음을 의미한다.
from bs4 import BeautifulSoup as bs
import requests
url = 'https://finance.naver.com/sise'
response = requests.get(url)
print(response.status_code)
>>>
200
status_code를 기반으로 동작 여부 결정하기
앞서 status_code 값이 200인 경우에만 값을 성공적으로 불러온 경우라고 설명했다. 이를 조건문을 활용하여 200인 경우에만 다른 정보를 불러오도록 하는 코드를 구축할 수 있다.
from bs4 import BeautifulSoup as bs
import requests
url = 'https://finance.naver.com/sise'
response = requests.get(url)
if response.status_code == 200:
pass
else:
pass
<div.class='type_box_l'> 값 가져오기
이제 response라는 변수 안에 해당 링크의 데이터들이 포함되어 있는데, 이 데이터를 .text 메소드를 통해 텍스트화 시킨 후부터는 이전 게시글에서 살펴봤던 beautifulsoup4 사용 방법과 동일하다. 즉, bsObj라는 변수 안에 특정 데이터를 입력한 후, 그 안에서 찾고자 하는 태그를 입력하면 된다.
from bs4 import BeautifulSoup as bs
import requests
url = 'https://finance.naver.com/sise'
response = requests.get(url)
if response.status_code == 200:
html = response.text
bsObj = bs(html, 'html.parser')
test = bsObj.select_one('div.box_type_l')
print(test)
else:
pass
>>>
<div class="box_type_l">
<h3 class="top_tlt"><em>Top</em>종목</h3>
<div class="tab_style_1" id="siselist_title_tab_0">
(이하생략)