๐Ÿ“‚์›น ๊ฐœ๋ฐœ(Web)/๐ŸํŒŒ์ด์ฌ(Python) 44

ํŒŒ์ด์ฌ ์›น ํฌ๋กค๋ง ์ •์  ํฌ๋กค๋ง selenium ๋งˆ์šฐ์Šค ์ œ์–ด ํ‚ค๋ณด๋“œ ์ œ์–ด selenium๊ณผ bs4์˜ ์กฐํ•ฉ

## select find_all()๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค์นญ๋˜๋Š” ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ select_one()์œผ๋กœ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ ํด๋ž˜์Šค๋Š” ๋งˆ์นจํ‘œ(.) ์•„์ด๋””๋Š” ์ƒต(#)์œผ๋กœ, ์ž์†ํƒœ๊ทธ๋Š” ๋„์–ด์“ฐ๊ธฐ๋กœ ํ‘œํ˜„ print(soup.select("p")) #pํƒœ๊ทธ print(soup.select(".d")) # class๊ฐ€ d์ธ ํƒœ๊ทธ print(soup.select("p.d")) # class๊ฐ€ d์ธ pํƒœ๊ทธ print(soup.select("#i")) # id๊ฐ€ i์ธ ํƒœ๊ทธ print(soup.select("p#i")) # id๊ฐ€ i์ธ pํƒœ๊ทธ print(soup.select("body p")) #body์˜ ์ž์†์ธ p ํƒœ๊ทธ ํฌ๋กค๋ง ์˜ˆ์ œ f12 ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ์กฐํšŒ ๋™์  ํฌ๋กค๋ง https://chromed..

ํŒŒ์ด์ฌ ์›น ํฌ๋กค๋ง Beautiful Soup

ํฌ๋กค๋ง๊ณผ ์Šคํฌ๋ž˜ํ•‘ ํฌ๋กค๋ง : ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ์ธํ„ฐ๋„ท์„ ํƒ์ƒ‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ํฌ๋กค๋ง: ํฌ๋กค๋Ÿฌ๊ฐ€ ์›นํŽ˜์ด์ง€๋“ค์„ ๋Œ์•„๋‹ค๋‹ˆ๋Š” ํ–‰์œ„ ์Šคํฌ๋ž˜ํผ: ์›นํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์Šคํฌ๋ž˜ํ•‘: ์›นํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ํ–‰์œ„ => ํ†ต์ƒ์ ์œผ๋กœ ํฌ๋กค๋ง๊ณผ ์Šคํฌ๋ž˜ํ•‘์„ ํ•ฉ์ณ์„œ ํฌ๋กค๋ง์ด๋ผ๊ณ  ํ‘œํ˜„ํ•จ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ -์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์›น ์˜ˆ) ์Šค๋งˆํŠธํฐ ์•ฑ, ํฌ๋กฌ, ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ ์„œ๋ฒ„ -ํด๋ผ์ด์–ธํŠธ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒƒ -ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต -์ธํ„ฐ๋„ท ์ฃผ์†Œ์ฐฝ์— ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋Š” ํ–‰์œ„ => ์„œ๋ฒ„์— ์ ‘์† ์‘๋‹ต์ฝ”๋“œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ 100๋ฒˆ๋Œ€ 200๋ฒˆ๋Œ€ 300๋ฒˆ๋Œ€ 400๋ฒˆ๋Œ€ 400๋ฒˆ๋Œ€ ์กฐ๊ฑด๋ถ€ ์‘๋‹ต ์„ฑ๊ณต ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์™„๋ฃŒ ์š”์ฒญ ์˜ค๋ฅ˜ ์„œ๋ฒ„ ์˜ค๋ฅ˜ -..

ํŒŒ์ด์ฌ json

JSON (JavaScript Object Notation) -๋”•์…”๋„ˆ๋ฆฌ ๋น„์Šทํ•˜๋‹ค -๊ตฌ์กฐ { K : V } 1. Json Writer # ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• dict_list = [ { 'name' : 'james', 'age':20, 'spec':[ 175.5, 70.5 ] }, { 'name':'alice', 'age':21, 'spec': [ 168.5, 60.5 ] } ] json_string = json.dumps(dict_list) with open('dictlist.json', 'w') as file: file.write(json_string) print('dictlist.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.') # ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• import json dict_list = [ { 'name' : 'jam..

ํŒŒ์ผ๋ณต์‚ฌ/csvํŒŒ์ผ ์ฝ๊ธฐ ์“ฐ๊ธฐ

1. ํŒŒ์ผ๋ณต์‚ฌ ํŒŒ์ผ๋ณต์‚ฌ ์›๋ณธ -> ๋ฒ„ํผ ๋ณ€์ˆ˜(Memory) -> ๋ณต์‚ฌ๋ณธ buffer_size = 1024 #1024 byte -> 1 KB ์˜๋ฏธ with open('../../Day07/Section13/hello.txt', 'rb') as source: with open('hello2.txt', 'wb') as copy: while True: buffer = source.read(buffer_size) if not buffer: break copy.write(buffer) print('hello2.txt ํŒŒ์ผ์ด ๋ณต์‚ฌ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค') 2. CSV ํŒŒ์ผ CSV(comma-seperated values) ํ•„๋“œ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด๋‹ค. ์˜ˆ์ œ1) csvReader student_list = ..

ํŒŒ์ผ ๋งŒ๋“ค๊ณ  ์ฝ๊ธฐ

1. ํŒŒ์ผ ์ž…์ถœ๋ ฅ(I/O - input/output) ์ž…๋ ฅ(input) ๊ธฐ์กด ํŒŒ์ผ ์ฝ์–ด๋“ค์ด๋Š” ๊ฒƒ ์ถœ๋ ฅ(output) ํŒŒ์ผ์ƒ์„ฑ, ๋‚ด์šฉ ์ถ”๊ฐ€๋ฅผ ๋งํ•œ๋‹ค. # ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ• file open file = open('myFile.txt', 'wt') print('myFile.txt ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.') file.close() # ๋‹ซ์•„์ค˜์•ผ ํ•จ # with ๋ฌธ - ์ž๋™์œผ๋กœ close()๋ฅผ ํ•ด์ค€๋‹ค. with open('myFile.txt', 'wt') as file: print('myFile.txt ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.') 2. open ํ•จ์ˆ˜ ๋ชจ๋“œ w(write mode) : ์“ฐ๊ธฐ ์ „์šฉ ๋ชจ๋“œ / ํŒŒ์ผ ์—†์œผ๋ฉด ์ƒ์„ฑ t(text mode) : ํ•ด๋‹นํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ธ์‹ํ•˜๊ณ  ์ž…์ถœ๋ ฅ. b(binary mod..

์ง€์—ญ๋ณ€์ˆ˜(local) ์ „์—ญ๋ณ€์ˆ˜(global)

์ง€์—ญ๋ณ€์ˆ˜(local) ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์„ ์–ธ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ „์—ญ ๋ณ€์ˆ˜(global) ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์™ธ๋ถ€ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 1. gVar = '์ „์—ญ' def globalAndLocal(): lVar = '์ง€์—ญ' print(gVar, '๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค.') # ์ „์—ญ๋ณ€์ˆ˜, ์ฐธ์กฐ๋งŒ ํ•˜๊ณ  ์žˆ๋‹ค. print(lVar, '๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค.') globalAndLocal() gVar = '์ „์—ญ' def globalAndLocal2(): lVar = '์ง€์—ญ' gVar = '๋ณ€๊ฒฝ๋œ ์ „์—ญ์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ์ง€์—ญ' #์ง€์—ญ print(gVar, '๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค.') print(lVar, '๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค.') globalAndLocal2() print(gVar) 2. ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ total = 0 def gift(dic, who, money..

datetime ๋ชจ๋“ˆ

datetime ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค 1. import datetime # ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ณ€ํ™˜, ๋งˆ์ดํฌ๋กœ ์ดˆ ๋‹จ์œ„ ์ถœ๋ ฅ print(datetime.datetime.now()) print(datetime.datetime.today()) 2. date() ํ•จ์ˆ˜ ํŠน์ •๋‚ ์งœ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ print(datetime.date(2023, 1, 30)) print(datetime.time(10, 40, 0)) 3. ๋‚ ์งœ ํ•„๋“œ๊ฐ’ y = datetime.datetime.now().year m = datetime.datetime.now().month d = datetime.datetime.now().day h = datetime.datetime.now().hour mi = datetime.dateti..

ํŒŒ์ด์ฌ time ๋ชจ๋“ˆ

time ๋ชจ๋“ˆ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์— ๊ด€๋ จ๋œ time ๋ชจ๋“ˆ 1. import time 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ ๋งˆ์ดํฌ๋กœ ์ดˆ print(time.time()) #ํƒ€์ž„ ๋ชจ๋“ˆ์— ํƒ€์ž„ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ 2. ctime() ํ•จ์ˆ˜ - ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ time ์‹œ๊ฐ„ ํ˜•์‹์„ ๊ฐ–์ถฐ ๋ฐ˜ํ™˜ print(time.ctime(time.time())) ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๋‚ ์งœ์™€ ์ง€์‹œ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜•์‹์„ ๊ฐ–์ถ˜ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ print(time.strftime('%Y-%m-%d %H:%M:%S')) #์ŠคํŠธ๋ง ํฌ๋งท ํƒ€์ž„ print(time.strftime('%Y๋…„ %m์›” %d์ผ %H:%M:%S')) #์ŠคํŠธ๋ง ํฌ๋งท ํƒ€์ž„ #๋งŒ์•ฝ ์ธ์ฝ”๋”ฉ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. print( time.s..

ํŒŒ์ด์ฌ ๋žœ๋ค random ๋ชจ๋“ˆ

import random 1. ๋‘ ์ธ์ˆ˜ ์‚ฌ์ด print(random.randint(1, 10)) # 1 ~ 10 2. range ํ•จ์ˆ˜ print(random.randrange(10)) # 0 ~ 9 print(random.randrange(1, 10)) # 1 ~ 9 print(random.randrange(1, 10, 2)) # 1 ~ 9 ํ™€์ˆ˜๋งŒ, 1+2 ์ฆ๊ฐ 3. 0 ์ด์ƒ 1 ๋ฏธ๋งŒ print(random.random()) if random.random()

ํŒŒ์ด์ฌ ํ‘œ์ค€ ๋ชจ๋“ˆ

ํ‘œ์ค€๋ชจ๋“ˆ ํŒŒ์ด์ฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ค์น˜๋˜์–ด ์žˆ๋Š” ๋ชจ๋“ˆ # math - ์ˆ˜ํ•™ ๊ด€๋ จ ๋ชจ๋“ˆ import math 1. ์›์ฃผ์œจ print(math.pi) 2. ์˜ฌ๋ฆผ print(math.ceil(1.1)) 3. ๋‚ด๋ฆผ print(math.floor(1.9)) 4. ์ •์ˆ˜๋กœ ์ ˆ์‚ญ print(math.trunc(1.9)) #์ ˆ์‚ญ print(math.floor(1.9)) #๋‚ด๋ฆผ print(math.ceil(1.9)) #์˜ฌ๋ฆผ 5. ์ œ๊ณฑ๊ทผ print(math.sqrt(25)) 6. ์ œ๊ณฑ print(math.pow(2, 3))