지난 게시글에서 제작한 `i['href']`와 `i['onclick']` 안에 종목코드가 포함되어 있는데, 이 중 `i['href']` 뒤에 있는 숫자들이 바로 그 종목의 종목 코드에 해당한다. 여기서의 `i['href']`는 자료형이 문자열(string)이기 때문에 우리는 인덱싱을 통해 해당 종목의 종목 코드를 가져올 수 있다. 다행히도 모든 종목의 종목코드는 6자리로 구성되어 있기 때문에, 뒤에서부터 6개의 문자를 가져오도록 하면 그게 곧 종목코드가 된다.
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')
test_2 = test.select('td > a')
for i in test_2:
print("href:", i['href'])
print("code:", i['href'][-6:])
print("text:", i.get_text())
else:
pass
>>>
href: /item/main.naver?code=002420
code: 002420
text: 세기상사
href: /item/main.naver?code=018700
code: 018700
text: 바른손
href: /item/main.naver?code=035620
code: 035620
text: 바른손이앤에이
(이하 생략)
주소 완성시키기
위의 결과값 중 `href:` 뒤에 이어지는 문자들은 주소에 해당하는데, 실제로 저 주소를 입력해서 들어가면 웹 사이트를 찾을 수 없다는 문구가 출력된다. 그 이유는 저건 완전한 주소가 아니기 때문이다. 실제 화면에 접속해서 주소를 확인해보자.
위의 사진을 보면 알 수 있듯이, href 뒤에 이어지는 문자열들은 빨간색 영역에 해당한다. 따라서 우리는 finance.naver.com을 앞에 붙여주어야 주소에 접근할 수 있는 것이다. 따라서 코드 내에서 주소를 추가적으로 입력해주도록 하자.
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')
test_2 = test.select('td > a')
for i in test_2:
print("href:", "finance.naver.com" + i['href'])
print("code:", i['href'][-6:])
print("text:", i.get_text())
else:
pass
>>>
href: finance.naver.com/item/main.naver?code=002420
code: 002420
text: 세기상사
href: finance.naver.com/item/main.naver?code=018700
code: 018700
text: 바른손
href: finance.naver.com/item/main.naver?code=035620
code: 035620
text: 바른손이앤에이
href 안에 있는 값을 그대로 복사해서 주소창에 붙여넣으면 올바르게 접속되는 것을 확인할 수 있다.