ํฌ๋กค๋ง์ ๋ํด ๊ณต๋ถํ๋ ์ค ๋ด๊ฐ ํฌ๋กค๋งํ ๊ฒ์ ์์ ์ ์ ์ฅํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๊ทธ๋์ ๊ฐ๋จํ ์ฃผ์ ํ์ฌ๊ฐ๋ฅผ ์์ ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ ํด๋ณด์๋ค.
pip install openpyxl
.xlsx
์ฌ์ผํ๋ค.๐พ workbook ๊ฐ์ฒด๋ก ๋ฐํํ ๋ ์์
ํ์ผ์ ์๋ก ๋ง๋๋ ๋ฐฉ๋ฒ
๊ณผ ๊ธฐ์กด์ ์๋ ์์
ํ์ผ์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ
๋ ๊ฐ์ง๊ฐ ์๋ค.
์์
ํ์ผ์ ์๋ก ๋ง๋๋ ๋ฐฉ๋ฒ
wb = openpyxl.Workbook() #์๋ก์ด Workbook ๊ฐ์ฒด ์์ฑ #Workbook ๊ฐ์ฒด๋ฅผ ์ค์ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํด .save(ํ์ผ๋ช ) ์์ฑ wb.save("ํ์ผ๋ช ") #์ ์ฅ ํ ์์น๋ฅผ ์ ํด์ฃผ๊ณ ์ถ๋ค๋ฉด ๊ฒฝ๋ก ์ค์ wb.save(r'C:\๊ฒฝ๋ก')
๊ธฐ์กด์ ์๋ ์์
ํ์ผ์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ
#path ๋ณ์์ ๊ฒฝ๋ก ์ ์ฅ path= r'C:\๊ฒฝ๋ก' #๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ ์์ ํ์ผ์ ๋ถ๋ฌ์ด wb= openpyxl.load_workbook(path)
path= r'C:\pythonStart\์ฃผ์\data.xlsx' wb= openpyxl.load_workbook(path)
๐ ๋๋ ๊ธฐ์กด์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ data.xlsx
์์
ํ์ผ์ ๊ฒฝ๋ก๋ฅผ path์ ๋ด์๋ค. ์ ์ฝ๋์์ wb= openpyxl.load_workbook(path)
๊ฒฝ๋ก๋ฅผ ์ธ์๋ก ํ์ฌ workbook ๊ฐ์ฒด๋ก ๋ฐํํ ๊ฒ์ด๋ค.
๐พ WorkSheet๋ ์๋ก์ด sheet ์์ฑ
ํ ์ง , ๊ธฐ์กด์ ์๋ sheet ๋ถ๋ฌ์ฌ ๊ฒ
์ธ์ง ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์๋ก์ด sheet ์์ฑ
#์๋ก์ด ์ํฌ๋ถ ๊ฐ์ฒด ์์ฑ wb = op.Workbook() #wb ๊ฐ์ฒด๋ฅผ ํตํด ์๋ก์ด ์ํธ ์์ฑ ws = wb.create_sheet("์ํธ๋ช ")
๊ธฐ์กด์ ์๋ sheet ๋ถ๋ฌ์ด
#ํ์ฑํ๋์ด์๋ ์ํธ ์ค์ ws = wb.active
codes = [ '035720', #์นด์นด์ค ์ฝ๋ '000660', #SKํ์ด๋์ค ์ฝ๋ '005930', #์ผ์ฑ์ ์ ์ฝ๋ ]
์ด๋ฐ์์ผ๋ก ๊ธฐ์ ์ ์ด๋ฆ ์์๋ ์ฝ๋๊ฐ ๋ถ์ฌ๋์ด ์๋ค.
https://finance.naver.com/item/main.naver?code=035720
https://finance.naver.com/item/main.naver?code=000660
๋ํ ํด๋น ์ฃผ์์ URL์ ์ดํด๋ด๋ ํ๋ผ๋ฏธํฐ ๋ถ๋ถ์ code = ๊ฐ
์ ๋ณผ ์ ์๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ฅผ ๋ด์์ฃผ๊ณ ๋ฐ๋ณต๋ฌธ์ ์คํํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
row = 2 for i in codes: url= f"https://finance.naver.com/item/sise.naver?code={i}" response= requests.get(url) html= response.text soup= BeautifulSoup(html, 'html.parser') price= soup.select_one("#_nowVal").text price = price.replace(',', '') #๋ฌธ์์ด์ ,๋ฅผ ์ ๊ฑฐ print(price) ws[f'B{row}'] = int(price) row = row+1 wb.save(path)
row = 2
๋ 2๋ฒ์งธ ํ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ ํ์ฌ, for๋ฌธ์ด ๋๋ฉด์ 3, 4, .. ๋ฒ์งธ ํ์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ก, for๋ฌธ์ด ๋๊ธฐ ์ ์ ์ ์ธํ๋ค.
url= f"https://finance.naver.com/item/sise.naver?code={i}"
code์ ๊ฐ ๋ถ๋ถ์ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ์์ code์ ๋ด์์ค ์ฝ๋๊ฐ๋ค์ด i์ ๋ค์ด๊ฐ๊ฒ ํ๋ค.
price= soup.select_one("#_nowVal").text
์ #_nowVal
์ ๊ธฐ์
์ ์ฃผ์ ํ์ฌ๊ฐ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค. ํ์ฌ๊ฐ๋ ๋ฌธ์์ด๋ก ๋ฐ๊ณ ์์ผ๋ฉฐ ์ค๊ฐ์ ' , '๊ฐ ๋ค์ด๊ฐ์ replace๋ก ์ ๊ฑฐํด์ฃผ์๋ค.
ws[f'B{row}'] = int(price)
๋ ๊ธฐ์
์ ํ์ฌ๊ฐ๋ฅผ ์ซ์๋ก ํ๋ณํ ํด์ฃผ์๊ณ , ์ด๋ฅผ B2ํ์ ๋ด๋๋ค๋ ์๋ฏธ์ด๋ค.
์ ๋ฆฌํ์๋ฉด, ์ฃผ์์ ํ์ด์ง๋ฅผ ์ค์ ํด๋์ Code์ ๊ฐ
์ผ๋ก ์ด๋ํ์ฌ ํด๋น ํ์ด์ง์์ #_nowVal
์ ํด๋นํ๋ ์ ๋ณด๋ฅผ ํฌ๋กค๋งํ์ฌ ์ด๋ฅผ ์์
ํ์ผ์ ๋ด๋ ๊ฒ์ด๋ค.