PYTHON/Web Scraping

2.2 웹 스크래핑 - 원하는 자료 찾기 (2)

  • -

 

지난 게시글
1.1 웹 스크래핑 - 방법 알아보기
1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1)
1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2)
1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1)
2.1 웹 스크래핑 - 원하는 자료 찾기 (1)

 

 

특정 데이터열에서 원하는 값 가져오기

지난 게시글에서는   test_2  변수 내에 td > a을 통해 a 태그 안에 있는 정보만을 저장하도록 하였고, for문을 통해 데이터 하나하나에 접근하는 방법까지 알아보았다. 하지만 궁극적으로 우리에게 필요한 건 그 안에 있는 데이터들에 어떻게 접근할 수 있는가이다. 데이터에 접근을 해야만 데이터를 사용할 수 있는 것 아닌가? 그 방법은 의외로 간단하다.

<a class="tltle" href="/item/main.naver?code=002420" onclick="clickcr(this, 'bqu.2', '002420', '1', event)">세기상사</a>

위의 자료형을 보면 href와 onclick이 있는데, 이 두 가지 역시 <a> 태그 안에 있는 또 하나의 태그라고 이해하면 된다. 각각의 값에 접근하는 방법은 ['href']를 입력해주는 것이다. 아래의 코드를 확인해보자.

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(i)
		print("href:", i['href'])
		print("onclick:", i['onclick'])
		print("text:", i.get_text())
		print("str:", i.string)

else:
	pass

 

  test_2  변수를 대상으로 하는 for문 내에서는 단순한 값(i)과 href에 접근하기 위한 i['href'], onclick 값에 접근하기 위한 i['onclick']이 있으며 데이터 안에 있는 문자열만 추출하기 위한 get_text()와 string을 출력하도록 하고 있다. 그 결과값은 아래와 같다.

>>>>
<a class="tltle" href="/item/main.naver?code=002420" onclick="clickcr(this, 'bqu.2', '002420', '1', event)">세기상사</a>
href: /item/main.naver?code=002420
onclick: clickcr(this, 'bqu.2', '002420', '1', event)
text: 세기상사
str: 세기상사
<a class="tltle" href="/item/main.naver?code=018700" onclick="clickcr(this, 'bqu.2', '018700', '2', event)">바른손</a>
href: /item/main.naver?code=018700
onclick: clickcr(this, 'bqu.2', '018700', '2', event)
text: 바른손
str: 바른손
<a class="tltle" href="/item/main.naver?code=035620" onclick="clickcr(this, 'bqu.2', '035620', '3', event)">바른손이앤에이</a>
href: /item/main.naver?code=035620
onclick: clickcr(this, 'bqu.2', '035620', '3', event)
text: 바른손이앤에이
str: 바른손이앤에이
<a class="tltle" href="/item/main.naver?code=053050" onclick="clickcr(this, 'bqu.2', '053050', '4', event)">지에스이</a>
href: /item/main.naver?code=053050
onclick: clickcr(this, 'bqu.2', '053050', '4', event)
text: 지에스이
str: 지에스이
<a class="tltle" href="/item/main.naver?code=114450" onclick="clickcr(this, 'bqu.2', '114450', '5', event)">KPX생명과학</a>
href: /item/main.naver?code=114450
onclick: clickcr(this, 'bqu.2', '114450', '5', event)
text: KPX생명과학
str: KPX생명과학
(이하생략)

네이버 증권 상에서의 모습과 자료가 동일하다는 점을 확인할 수 있다.

 

 


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.