๐Ÿ–ฅ๏ธ[Python] 7-1-2. ์›นํฌ๋กค๋ง (ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ)

thisk336ยท2023๋…„ 6์›” 12์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
10/17
post-thumbnail

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ

  • bs4 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ •๋ฆฌํ•œ source์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์†ํ•œ tag์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • find, find_all ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์›ํ•˜๋Š” tag์™€ ์†์„ฑ์— ๋งž๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
# find_all()๋Š” HTML source์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  tag์„ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
## HTML soruce์—์„œ 'td class = "number_1"'์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

source.find_all('td', class_="number_1") 
[<td class="number_1">336.27</td>,
 <td class="number_1">
 <span class="tah p11 red01">
 				+0.61%
 				</span>
				   .
				   .
				   .
 </td>,
 <td class="number_1" style="padding-right:40px;">89,271</td>,
 <td class="number_1" style="padding-right:30px;">4,629,262</td>]

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์ธ '336.27', '334.23' ... ๋“ฑ์„ ์ถ”์ถœํ•˜๋ ค๋ฉด tag๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ ๋‹ค์Œ์— ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

prices = source.find_all('td', class_="number_1") 
price_list = []

#ํŽ˜์ด์ง€์—์„œ ํ‘œ์˜ ํƒœ๊ทธ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด, ์ฒด๊ฒฐ๊ฐ€ ์ดํ›„๋กœ ์ „์ผ๋น„/๋“ฑ๋ฝ๋ฅ /๊ฑฐ๋ž˜๋Ÿ‰/๊ฑฐ๋ž˜๋Œ€๊ธˆ ๋“ค๋„ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์–ด, 4๊ฐœ์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for price in prices[::4]:
    price_list.append(price.text) # ์ถ”์ถœํ•œ text๋ฅผ list์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

price_list
['336.27', '334.23', '329.84', '326.61', '325.31', '324.46']

๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‚ ์งœ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” td ํƒœ๊ทธ๋ฅผ ํ™•์ธ ํ›„ ์›ํ•˜๋Š” ์ •๋ณด๋งŒ ๋”ฐ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dates = source.find_all('td', class_="date")
date_list = []

for date in dates:
    date_list.append(date.text)
    
date_list
['2023.05.22',
 '2023.05.19',
 '2023.05.18',
 '2023.05.17',
 '2023.05.16',
 '2023.05.15']

0๊ฐœ์˜ ๋Œ“๊ธ€